emilianotisato / nova-tinymce
此Nova包允许您在文本区域中使用TinyMCE编辑器。您可以自定义编辑器选项,并且...您可以直接上传图片到您的服务器,并在不离开文本编辑器的情况下将其放置在文本中!
Requires
- php: ^7.3|^8.0
README
此Nova包允许您使用 TinyMCE编辑器 对文本区域进行编辑。您可以自定义编辑器选项,并且...您可以直接 上传图片到您的服务器 并将其放置在内容中,而无需离开文本编辑器!!
安装
(向后兼容)
composer require emilianotisato/nova-tinymce
运行以下命令,以发布TinyMCE JavaScript和CSS资产。
php artisan vendor:publish --provider="Emilianotisato\NovaTinyMCE\FieldServiceProvider"
用法
在您的Nova资源中添加use声明并使用NovaTinyMCE字段
use Emilianotisato\NovaTinyMCE\NovaTinyMCE; // ... /** * Get the fields displayed by the resource. * * @param \Illuminate\Http\Request $request * @return array */ public function fields(Request $request) { return [ ID::make()->sortable(), NovaTinyMCE::make('body'), ]; }
默认情况下,编辑器附带一些基本选项和图像管理,没有文件管理器(仅作为链接插入)。
您可以使用自定义选项,例如
NovaTinyMCE::make('body')->options([ 'plugins' => [ 'lists','preview','anchor','pagebreak','image','wordcount','fullscreen','directionality' ], 'toolbar' => 'undo redo | styles | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | image | bullist numlist outdent indent | link' ]),
使用LFM上传图片
现在,如果您需要从文本编辑器上传图片,我们需要安装 UniSharp Laravel Filemanager,并将 use_lfm => true
选项传递给您的选项数组
NovaTinyMCE::make('body')->options([ 'plugins' => [ 'lists','preview','anchor','pagebreak','image','wordcount','fullscreen','directionality' ], 'toolbar' => 'undo redo | styles | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | image | bullist numlist outdent indent | link', 'use_lfm' => true ]),
仅当您使用laravel-filemanager v1时
如果您使用LFM v1,则最后一个步骤是运行此命令以修复一些文件管理器文件
php artisan nova-tinymce:support-lfm
最后,您需要更新 lfm_url
键以匹配旧URL版本,如下所示 lfm_url' => 'laravel-filemanager
。
重要:如果您在laravel 6中使用laravel-filemanager v1,则需要导入辅助库,因为旧版文件管理器需要它们: composer require laravel/helpers
。
可选配置
Laravel文件管理器URL
可选,如果您在包配置文件(config/lmf.php
)中更改了laravel-filemanager URL,您需要将此信息传递给此nova字段,使用选项数组中的 lfm_url
键。
// ... 'use_lfm' => true, 'lfm_url' => 'my-custom-filemanager-url' // ...
覆盖配置文件
如果您有一个默认的 options
数组,您希望在每次实例化 NovaTinyMCE
字段时加载,您可以可选地发布配置文件并覆盖 default_options
数组
php artisan vendor:publish --provider="Emilianotisato\NovaTinyMCE\FieldServiceProvider" --tag="config"
这是已发布配置文件的内容
<?php return [ /* |-------------------------------------------------------------------------- | Default Options |-------------------------------------------------------------------------- | | Here you can define the options that are passed to all NovaTinyMCE | fields by default. | */ 'default_options' => [ 'content_css' => '/vendor/tinymce/skins/ui/oxide/content.min.css', 'skin_url' => '/vendor/tinymce/skins/ui/oxide', 'path_absolute' => '/', 'plugins' => [ 'lists','preview','anchor','pagebreak','image','wordcount','fullscreen','directionality' ], 'toolbar' => 'undo redo | styles | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | image | bullist numlist outdent indent | link', 'relative_urls' => false, 'use_lfm' => false, 'lfm_url' => 'filemanager' ], ];
插件自定义
您可以将任何配置选项传递给javascript SDK,并将其放入 options()
方法中的数组。
例如,您可能希望增加文本区域的高度
NovaTinyMCE::make('body')->options([ 'height' => '980' ]),
您可以在文档中查看完整的参数列表:https://www.tiny.cloud/docs/configure/
在属性属性上使用JSON语法
如果您在属性名称上使用JSON语法,TinyMCE将无法初始化,因为默认的id将是一个无效的HTML id属性。为了解决这个问题,您可以定义一个自定义id。例如
NovaTinyMCE::make('Value', 'text->en')->id('custom-id');