dinandmentink / nova-markdown
Laravel Nova Markdown 字段。
Requires
- php: >=8.1
- illuminate/support: ^10.0
- laravel/nova: ^4.0
- nova-kit/nova-packages-tool: ^1.0
- spatie/image: ^2.0
Requires (Dev)
- laravel/pint: ^1.6
README
此项目已废弃。Laravel v10 是此包支持的最新版本。
此项目现在已过时,将不再维护。请注意,laravel nova 内置的 markdown 字段 现在支持文件附件。
如果您想维护此项目的继承者,请进行分支并联系我,以便我可以推荐它。
自从 Laravel Nova 在 v4.0 版本中改为年度费用以来,我已经寻找了优秀的替代方案。我决定将所有个人项目和客户迁移到 filament。
❤️ 从 2019 年开始,我很高兴维护这个项目。感谢拉取请求、建议和其他帮助。感谢使用此包。
备注。我对 Laravel Nova 转向年度许可证有点生气。这迫使我作为一个单人代理商,要么放弃更新,要么为大约 30 个客户每年付费。由于它的许可证,Laravel Nova 的多租户产品变得完全不可使用。我强烈建议检查 filament 作为开源替代方案。
Nova Markdown
将 markdown 编辑器字段添加到 Laravel Nova。基于 easymde,Nova Markdown 支持高亮显示、一些有用的按钮和内联图片上传。它简单、可配置,并且工作正常™。
安装说明
使用 composer 需要 dinandmentink/nova-markdown
composer require dinandmentink/nova-markdown
此包将使用 Laravel 的包自动发现注册自己。现在,无论何时您想要使用 Markdown 字段,都可以使用 Markdown::make
,就像您在 Nova 资源的方法 fields()
中期望的那样。
use DinandMentink\Markdown\Markdown; public function fields(Request $request) { return [ Markdown::make("Field Name"), ]; }
它将接受所有默认 Nova 选项
use DinandMentink\Markdown\Markdown; public function fields(Request $request) { return [ Markdown::make("Content")->rules('required')->hideFromIndex(), ]; }
Nova Markdown 使用 nova-packages-tool 提供版本化的 laravel-nova
混合。请确保您的 composer 的 script.post-update-cmd
中有 @php artisan nova:publish
,以 保持 nova 的资产更新。
版本控制
Nova Markdown 使用 语义版本控制,并旨在始终支持最新的主要 Laravel 和 Laravel Nova 版本。
只有 Nova Markdown 的最新主要版本将接收更新,建议在 Laravel 或 Laravel Nova 发布新主要版本时升级到 Nova Markdown 的最新版本。
Nova Markdown | Laravel | Laravel Nova | 维护 |
---|---|---|---|
v5.x | v10.x | v4.x | 功能、安全、错误 |
v4.x | v9.x | v4.x | 安全 |
v3.x | v9.x | v3.x | 无 |
v2.x | v8.x | v3.x | 无 |
图片上传
Nova Markdown 支持内联图片上传。您可以通过将图片拖放到 markdown 编辑器来上传图片。或者,粘贴剪贴板中的图片也将有效。
默认情况下,所有 Markdown
字段都启用了图片上传。可以通过配置文件完全禁用或默认禁用。可以按字段逐个启用或禁用图片上传,但这只会切换图片上传的前端实现。
use DinandMentink\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 项目中上传图片。以下假设必须满足。大多数这些假设都可以通过配置文件覆盖。
- 假设有一个名为
public
的磁盘已在filesystems.php
中配置。 - Nova Markdown 使用 spatie/image 来压缩和调整图片大小。图片上传需要启用 php 的 exif 扩展。
- Nova Markdown 在
nova.middleware
中配置的同个中间件中注册了一个路由和一个控制器。这假设可能访问 Nova 的认证用户也可以通过 Nova Markdown 的图片上传路由上传图片。
配置
配置主要处理图片上传。提供了合理的默认值,但 Nova Markdown 旨在通过 config/nova-markdown.php
或环境变量进行完全配置。
有关所有配置选项,请参阅 默认配置,这可以发布
php artisan vendor:publish --provider="DinandMentink\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
中配置。请注意,Nova Markdown 默认以 公开可见 的方式存储文件。这可能覆盖了磁盘的默认私有设置('visibility' => 'private'
),逐个文件进行。
文件可见性
配置键:file-visibility
环境变量:NOVA_MARKDOWN_FILE_VISIBILITY
默认值:public
上传的文件将在上传后获得此可见性。更改为 'private'
以将文件设置为不可公开查看,或更改为 null
以使用磁盘的默认值。请注意,将文件上传为 private
可能阻止访客查看它们,您可能需要引入其他显示文件的方法。
目录
配置键: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
默认情况下,上传的图片将使用原始文件名的slug版本存储。您可以将此设置为true,以使用随机文件名。
安全
如果您发现任何安全问题,请通过电子邮件dinand@elementon.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处理图片上传。
功能 | 默认Markdown | Nova Markdown |
---|---|---|
粗体 | 斜体 | 斜体 |
下划线 | 斜体 | 斜体 |
外部图片 | 斜体 | 斜体 |
链接 | 斜体 | 斜体 |
预览 | 斜体 | 斜体 |
行内图片上传 | - | 斜体 |
标题 | - | 斜体 |
引用块 | - | 斜体 |
有序列表 | - | 斜体 |
无序列表 | - | 斜体 |
并排查看 | - | 斜体 |
致谢
自2019年以来,该项目由Elementon自豪地创建和维护。Elementon是荷兰的一家小型网站开发公司。
在Laravel Nova将其许可更改为年度费用后,Elementon决定将filament作为管理面板进行切换,因此不再积极维护此项目。