everzel / nova-markdown
Laravel Nova Markdown 字段。
Requires
- php: >=7.4
- illuminate/support: ^8.13
- spatie/image: ^1.4.0
This package is not auto-updated.
Last update: 2024-09-20 13:41:34 UTC
README
Nova Markdown
将 Markdown 编辑器字段添加到 Laravel Nova。基于 easymde,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 Markdown 或 commonmark。
与 Nova 的内置 Markdown 的区别
Nova 当然提供了它自己的 Markdown 字段。Nova 的官方 Markdown 和 Nova Markdown 类似。它们都提供了对 Markdown 文本的行内文本高亮显示。它们都不对输入进行转换,而是将其作为纯文本存储,通常在 TEXT 列中。
但是,这个包将添加一些默认 Markdown 字段中不包括的更多高亮显示和工具栏按钮。但主要的是,Nova Markdown 处理图片上传。
待办事项
- 编写测试
致谢
该项目是由 Dcreative 荣幸创建和维护的。Dcreative 是一家荷兰的小型网络开发公司。
我从 PHP、Laravel 以及无数的其它开源项目中受益良多。Nova Markdown 是我对此的小小贡献。Nova Markdown 对您有帮助吗?请随意发送一份 感谢信 或 捐赠一杯啤酒。无论如何,我很高兴提供 Nova Markdown。
第一个版本基于 @palauaandsons
