insthync / yii2-ckeditor-widget
为 Yii2 量身定制的 CKEditor 小部件(基于 https://github.com/2amigos/yii2-ckeditor-widget 进行更新以适应最新的 Yii2)
Requires
- ckeditor/ckeditor: 4.22
- sunhater/kcfinder: *
- yiisoft/yii2: ~2.0.45
Requires (Dev)
- phpunit/phpunit: ~9.5.0
- roave/security-advisories: dev-master
This package is not auto-updated.
Last update: 2024-09-26 15:39:29 UTC
README
渲染一个 CKEditor WYSIWYG 文本编辑插件 小部件。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
composer require insthync/yii2-ckeditor-widget:dev-master
或者
"insthync/yii2-ckeditor-widget" : "dev-master"
将以下内容添加到您的应用程序的 composer.json
文件的 require 部分。
皮肤和插件
此小部件与 CKEditor 的默认 dev-full/stable
分支一起工作,包含一系列插件和皮肤。如果您希望配置不同的皮肤或插件,您需要单独下载它们并相应地配置小部件的 clientOptions
属性。
使用方法
库包含两个小部件:CKEditor
和 CKEditorInline
。一个是用于经典编辑,另一个是用于内联编辑。
使用基本预设的模型
use dosamigos\ckeditor\CKEditor;
<?= $form->field($model, 'text')->widget(CKEditor::className(), [
'options' => ['rows' => 6],
'preset' => 'basic'
]) ?>
使用基本预设的内联编辑
use dosamigos\ckeditor\CKEditorInline;
<?php CKEditorInline::begin(['preset' => 'basic']);?>
This text can be edited now :)
<?php CKEditorInline::end();?>
如何添加自定义插件
这是向编辑器添加自定义插件的方法。从版本 2.0 开始,我们使用 Packagist 版本的 CKEditor 库,因此我们需要使用其配置 API 来添加外部插件。
例如,让我们添加流行的 代码编辑插件。此插件将允许我们在编辑器的工具栏中添加按钮,以便我们可以将代码添加到正在编辑的内容中。
假设您已经下载了插件并将其添加到 Yii2 网站的根目录中。我就是这样做的
+ frontend + -- web + -- pbckcode
现在我们可以将其添加到我们的 CKEditor 小部件中。在这个例子中,我使用的是 CKEditorInline
小部件。在这个例子中,您可能会注意到我们没有使用预设属性;这是非常重要的,因为我们想为小部件添加一个自定义的工具栏。不多说了,以下是代码
<?php use dosamigos\ckeditor\CKEditorInline; // First we need to tell CKEDITOR variable where is our external plugin $this->registerJs("CKEDITOR.plugins.addExternal('pbckcode', '/pbckcode/plugin.js', '');"); // ... // Using the plugin <?php CKEditorInline::begin(['preset' => 'custom', 'clientOptions' => [ 'extraPlugins' => 'pbckcode', 'toolbarGroups' => [ ['name' => 'undo'], ['name' => 'basicstyles', 'groups' => ['basicstyles', 'cleanup']], ['name' => 'colors'], ['name' => 'links', 'groups' => ['links', 'insert']], ['name' => 'others', 'groups' => ['others', 'about']], ['name' => 'pbckcode'] // <--- OUR NEW PLUGIN YAY! ] ]]) ?> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p> <?php CKEditorInline::end() ?>
浏览和上传
要浏览和上传文件,使用的是默认禁用的 KCFinder 插件。
要启用它,只需使用 'kcfinder'=>true
。
请看这个简单的示例代码
<?php use dosamigos\ckeditor\CKEditor; echo $form->field($model, 'text')->widget(CKEditor::className(), [ 'kcfinder' => true, ]);
上传文件夹的名称默认为根 web 目录中的 upload
。
您可以设置 kcfOptions
参数的选项,您可以在以下链接中找到 KCFinder 的所有选项: https://kcfinder.sunhater.com/install
要更改上传目录或更改一些选项,您可以看到这个高级示例代码
<?php use dosamigos\ckeditor\CKEditor; echo $form->field($model, 'text')->widget(CKEditor::className(), [ 'kcfinder' => true, 'kcfOptions' => [ 'uploadURL' => '@web/upload', 'uploadDir' => '@webroot/upload', 'access' => [ // @link http://kcfinder.sunhater.com/install#_access 'files' => [ 'upload' => true, 'delete' => true, 'copy' => true, 'move' => true, 'rename' => true, ], 'dirs' => [ 'create' => true, 'delete' => true, 'rename' => true, ], ], 'types' => [ // @link http://kcfinder.sunhater.com/install#_types 'files' => [ 'type' => '', ], ], ], ]);
关于额外资源
您可能想知道为什么有 dosamigos-ckeditor.widget.js
文件。原因是由于 Yii2 与表单和跨站请求伪造(csrf)的工作方式。CKEditor 在使用文件上传时不会触发 on change 事件也不会收集 CSRF 令牌。
该资源解决了这两个问题。
测试
要测试扩展,最好在您的计算机上克隆此存储库。然后,转到扩展文件夹并执行以下操作(假设您已经在计算机上安装了 composer
)
$ composer install --no-interaction --prefer-source --dev
一旦安装了所有必需的库,然后执行以下操作
$ vendor/bin/phpunit
更多信息
请检查CKEditor插件网站的文档,以获取有关其配置选项的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
鸣谢
许可证
BSD许可证(BSD)。请参阅许可证文件以获取更多信息。
Web开发从未如此有趣!
www.2amigos.us