everzel/nova-markdown

Laravel Nova Markdown 字段。

dev-main 2023-07-27 10:02 UTC

This package is not auto-updated.

Last update: 2024-09-20 13:41:34 UTC


README

Nova Markdown

Nova Markdown

Latest Version on Packagist Total Downloads Forks Stars MIT license Donate

将 Markdown 编辑器字段添加到 Laravel Nova。基于 easymde,Nova Markdown 支持高亮显示、一些有用的按钮和内联图像上传。它简单、可配置,并且真的能工作™。

Nova Markdown

安装说明

使用 composer 需要 everzel/nova-markdown

composer require everzel/nova-markdown

该包将使用 Laravel 的包自动发现功能注册自身。现在,每当您想在 Nova 资源中使用 Markdown 字段时,就像在 fields() 方法中预期的那样,使用 Markdown::make

use Everzel\Markdown\Markdown;

public function fields(Request $request)
{
    return [
        Markdown::make("Field Name"),
    ];
}

它将接受所有默认的 Nova 选项

use Everzel\Markdown\Markdown;

public function fields(Request $request)
{
    return [
        Markdown::make("Content")->rules('required')->hideFromIndex(),
    ];
}

图像上传

Nova Markdown 支持内联图像上传。要上传图像,您可以将其拖放到 Markdown 编辑器上。或者,从剪贴板粘贴图像也可以。

默认情况下,所有 Markdown 字段都启用了图像上传。可以通过配置完全禁用,或默认禁用。图像上传可以在每个字段的基础上启用或禁用,但这仅会切换图像上传的前端实现。

use Everzel\Markdown\Markdown;

public function fields(Request $request)
{
    return [
        Markdown::make("Field With Uploads")->uploads(),
        Markdown::make("Field Without Uploads")->uploads(false),
    ];
}

图像上传应该能正常工作™。Nova Markdown 旨在支持原始 Laravel + Nova 项目上的图像上传。必须满足以下假设。大多数这些假设都可以通过配置覆盖。

  • 假设在 filesystems.php 中配置了一个名为 public 的磁盘。
  • Nova Markdown 使用 spatie/image 对图像进行压缩和调整大小。图像需要启用 php exif 扩展
  • Nova Markdown 在 nova.middleware 中配置的相同中间件中注册了一个路由和一个控制器。这假设可以访问 Nova 的认证用户也可以通过 Nova Markdown 的图像上传路由上传图像。

配置

配置主要处理图像上传。提供了合理的默认值,但 Nova Markdown 旨在通过 config/nova-markdown.php 或环境变量进行完全配置。

有关所有配置选项,请参阅默认配置,该配置可以发布

php artisan vendor:publish --provider="Everzel\Markdown\FieldServiceProvider"

这将创建一个 config/nova-markdown.php 文件,您可以根据需要修改以设置配置。请确保检查此包中原始配置文件在发布之间的更改。以下是一些最有用的配置项。

启用上传

配置键:uploads
环境变量:NOVA_MARKDOWN_UPLOADS
默认值:true

将此设置为 false 将完全禁用图像上传。

默认启用上传

配置键:uploads-default-enabled
环境变量:NOVA_MARKDOWN_UPLOADS_DEFAULT_ENABLED
默认值:true

默认启用上传(按字段启用)。当完全禁用上传时,没有效果。

设置磁盘

配置键:disk
环境变量:NOVA_MARKDOWN_DISK
默认值:public

设置上传存储的磁盘。必须在 filesystems.php 中配置。

目录

配置键:directory
环境变量:NOVA_MARKDOWN_DIRECTORY
默认值:uploads

设置上传图片的目录。或者,可以配置一个函数,该函数以上传的用户 $user 作为参数,并可用于按用户分组文件。示例

function($user) { 
    return "uploads/" . \Str::slug($user->name); 
}

最大上传大小

配置键:max-size
环境变量:NOVA_MARKDOWN_MAX_SIZE
默认值:8 * 1024

上传图片的最大大小(以千字节为单位)。

最大上传宽度

配置键:max-width
环境变量:NOVA_MARKDOWN_MAX_WIDTH
默认值:1920

上传图片的最大宽度(以像素为单位)。上传的图片将被缩放到这个宽度。使用 null 禁用图片缩放。

图片质量

配置键:quality
环境变量:NOVA_MARKDOWN_QUALITY
默认值:85

上传的图片将被转换为这个质量。介于 0 到 100 之间的整数。使用 null 禁用质量调整。

随机文件名

配置键:random_filename
环境变量:NOVA_MARKDOWN_RANDOM_FILENAME
默认值:false

默认情况下,上传的图片将使用其原始文件名的缩略版本存储。您可以将其设置为 true 以使用随机文件名。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件 dinand@dcreative.nl 联系,而不是使用问题跟踪器。

渲染 Markdown

Nova Markdown 会在 Nova 中添加一个 Markdown 编辑器字段。它不会在 Nova 之外渲染 Markdown。对于在 Laravel 视图中渲染 Markdown,我建议查看 Laravel Markdowncommonmark

与 Nova 的内置 Markdown 的区别

Nova 当然提供了它自己的 Markdown 字段。Nova 的官方 Markdown 和 Nova Markdown 类似。它们都提供了对 Markdown 文本的行内文本高亮显示。它们都不对输入进行转换,而是将其作为纯文本存储,通常在 TEXT 列中。

但是,这个包将添加一些默认 Markdown 字段中不包括的更多高亮显示和工具栏按钮。但主要的是,Nova Markdown 处理图片上传

待办事项

  • 编写测试

致谢

Dcreative Open Source

该项目是由 Dcreative 荣幸创建和维护的。Dcreative 是一家荷兰的小型网络开发公司。

我从 PHP、Laravel 以及无数的其它开源项目中受益良多。Nova Markdown 是我对此的小小贡献。Nova Markdown 对您有帮助吗?请随意发送一份 感谢信捐赠一杯啤酒。无论如何,我很高兴提供 Nova Markdown。

第一个版本基于 @palauaandsons