yii2集成富文本编辑器redactor
前面我们说过如何在yii2中集成百度编辑器umeditor以及如何解决umeditor上传图片问题
今天我们来谈谈yii2集成另外一个强大好用的富文本编辑器Redactor,个人觉得Redactor比百度编辑器好用哦
Redactor有官方的Yii2插件package,实用性也是很强的。
首先我们不急不躁,先进行安装Redactor。
可以参考https://github.com/yiidoc/yii2-redactor进行安装。有很多新手看不惯英文哈,如果你点击了链接参考了github上的安装,希望你再回来看看在整个安装过程中都要哪些必要的注意点。
1、利用composer安装
composer require --prefer-dist yiidoc/yii2-redactor "*"
2、添加配置项
'modules' => [ 'redactor' => [ 'class' => 'yii\redactor\RedactorModule', 'uploadDir' => '上传目录', // 比如这里可以填写 ./uploads 'uploadUrl' => '图片可访问地址', 'imageAllowExtensions'=>['jpg','png','gif'] ], ],
第一个注意点,默认的上传文件保存在根目录下的uploads,如果你想更换文件的保存目录,修改配置项uploadDir即可,同时你需要修改uploadUrl保证图片可访问。
3、如果你的view是ActiveField类型,下面的配置适合你
<?= $form->field($model, 'content')->widget(\yii\redactor\widgets\Redactor::className()) ?>
但是如果你的表单不是用用 生成的,你应该像下面这样配置
<?= \yii\redactor\widgets\Redactor::widget([ 'model' => $model, 'attribute' => 'content' ]) ?>
4、其中上传类用的是redactor一套,但是如果你的上传类需要重写(这往往没有必要),也可以,只需要像下面这样加几个配置即可
<?= $form->field($model, 'content')->widget(\yii\redactor\widgets\Redactor::className(), [ 'clientOptions' => [ 'imageManagerJson' => ['/redactor/upload/image-json'], 'imageUpload' => ['/redactor/upload/image'], 'fileUpload' => ['/redactor/upload/file'], 'lang' => 'zh_cn', 'plugins' => ['clips', 'fontcolor','imagemanager'] ] ]) ?>
5、配置语言或者插件,像第四步一样,在clientOptions项中添加lang和plugins配置项即可,如果你想问都有哪些plugins,打开目录\vendor\yiidoc\yii2-redactor\assets\plugins
可以一睹风采
6、图片上传注意了,因为redactor是以模块进行引入的,如果你的项目含有权限管理,记得添加权限哦
7、忘记了一个大前提,保证你的php支持fileinfo扩展,打开php.ini文件去掉fileinfo前面的分号即可
8、如果你想要对redactor进行配置或者扩展,可以参考redactor官网 https://imperavi.com/redactor/docs/settings
9、前面操作顺利的小伙伴会发现 redactor这里的文件默认是上传到:uploadDir/Yii::$app->user->isGuest ? 'guest' : Yii::$app->user->id/ 目录下,这是不是不太好,假如我网站就一个管理员uid=1,上传了10000张图片,还岂不都放在 /uploadDir/1/目录下面了,下面我们来看看怎么简单的实现上传文件置于uploadDir/date('Ymd')目录下面去,也就是说我每天上传的都单独存放到一个文件夹里面去
- 拷贝一份yii\redactor\RedactorModule.php文件到backend\components\目录下,目录你自己随便定好了,这里举个例子
- 修改main.php文件redactor的class指向 这里修改为 'class' => 'backend\components\RedactorModule'
- 打开backend\components\RedactorModule.php修改getOwnerPath方法,自己随便改就好了
getOwnerPath修改为如下,可参考
public function getOwnerPath() { return date('Ymd'); // return Yii::$app->user->isGuest ? 'guest' : Yii::$app->user->id; }