yii2集成富文本编辑器redactor [ 2.0 版本 ]
作者:白狼 出处:http://www.manks.top/article/yii2_redactor本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
前面我们说过如何在yii2中集成百度编辑器umeditor以及如何解决umeditor上传图片问题
今天我们来谈谈yii2集成另外一个强大好用的富文本编辑器Redactor,个人觉得redactor比百度编辑器好用哦
Redactor有官方的Yii2插件package,实用性也是很强的。
首先我们不急不躁,先进行安装Redactor。
可以参考 https://github.com/yiidoc/yii2-redactor 进行安装。有很多新手看不惯英文哈,如果你点击了链接参考了github上的安装,希望你再回来看看在整个安装过程中都要哪些必要的注意点。
1、我们跟他们一样,利用composer安装即可。
2、添加配置项
'modules' => [
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '上传目录',
'uploadUrl' => '图片可访问地址',
'imageAllowExtensions'=>['jpg','png','gif']
],
],
第一个注意点,默认的上传文件保存在根目录下的uploads,如果你想更换文件的保存目录,修改配置项 uploadDir即可,同时你需要修改uploadUrl保证图片可访问。
3、如果你的view是ActiveField类型,下面的配置适用你
<?= $form->field($model, 'content')->widget(\yii\redactor\widgets\Redactor::className()) ?>
但是如果你的表单不是用yii自带的组建生成的,你应该像下面这样配置
<?= \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\yii2-redactor\assets\plugins可以一睹风采。
6、图片上传注意了,因为redactor是以模块进行引入的,如果你的项目含有权限管理,记得添加权限哦。
7、忘记了一个大前提,保证你的php支持fileinfo扩展。打开php.ini文件去掉fileinfo前面的分号即可
白狼栈
最后登录:2023-03-08
在线时长:90小时7分
- 粉丝332
- 金钱1371
- 威望500
- 积分7271
共 20 条评论
请问一下这个是什么原因呢?
Class 'yii\redactor\widgets\Redactor' not found
为什么找不到类呢?
你没安装好
vendor 里面 已经增加了 , yiidoc 这个目录, 里面文件也是完整的。 一直提示 找不到类。
有点纠结。
\vendor\yiidoc\yii2-redactor\widgets里面有这个类吗
widgets 是个目录 下面 包含 Redactor.php 和 RedactorAsset.php
文件
\yii\redactor\widgets\Redactor 你是不是最前面少写了一个斜杠 \
这个都检查过的,我怀疑 是配置问题了。我现在用的是 baisc 的。
@nomeore 我的也是Class 'yii\redactor\widgets\Redactor' not found。请问你解决了没有,怎么解决的!
@nomeore 好了,重安装了一次
我上传图片总提示403forbidden 错误,我在web下新建的uploads文件夹权限都有的,请问还需要设置哪里的权限呢?
我也是这个问题,给你个建议,给redactor放个权限,我搞定了
@zhaoyixim 403是没有访问的权限,如果设置了rbac或者acf,开放权限就好
@白狼栈 搞定了。嘿嘿,我发现了
@zhaoyixim 怎么给redactor放权限,我也总是403 forbidden
如果 不是composer安装的插件 需要怎么配置才能用勒?
composer安装不了,直接下的源码,一直报错Class 'yii\redactor\widgets\Redactor' not found
如果我的图片是上传到别的服务器 那还可以正常用不?
可以用,要设置s3就好
@白狼栈 这个可以具体说下吗?在哪设置s3
上传图片之后总是提示出一个 true,fileinfo也开了,路径也配置了。最后发现有个301重定向的问题,然后设置urlManager里面的enablePrettyUrl为false就能正常访问了,
看github的issues里面有人说添加一个规则:
'rules' => [
'<controllers:\w+>/redactor' => '/redactor/upload/image', ],
但在我这还是不管用,头疼
我也是的呢
打开Yii2下方的debug工具栏,你上传图片时会左边会提示红色,有Ajax错误,查一下,肯定是路由认错了。我的就任成了site/redactor/upload/image,自己在urlManager配置里没写好,正则没去掉/,导致认错了路由,请求报错
编辑器上面小图标悬停后出现的文字在哪改?
显示出的内容带html标签怎么过滤呢?
content:html(假如你用的DetailView 假如你的文本字段是content )
请问
view 使用 <?= \yii\redactor\widgets\Redactor::widget([ 'model' => $model, 'attribute' => 'content' ]) ?>
报了一个Undefined variable: model
怎么解决?
我也遇到这个问题了,请问你解决了吗?
@soup <?= \yii\redactor\widgets\Redactor::widget(['model' => 'jay' ,'attribute' => 'content' ]) ?> 不要写$model 随便写个字符就可以了
插入图片为嘛总是出现301重定向什么的提示错误啊 ,其他功能都能正常使用,就是图片不显示![HGL%OLJRJJPSQ1`{%]1K4TG.png](/uploads/images/201708/30115846973_thumb.png "HGL%OLJRJJPSQ1`{%]1K4TG.png")
哈哈
采用composer安装,在vendor目录下 是这样的:
然后在frontend/config/main.php文件中是这么配置的:
``//富文本编辑器配置,php开启fileinfo扩展项
'modules' => [ 'redactor' => [ 'class' => 'yii\redactor\RedactorModule', 'uploadDir' => '@webroot/uploadfolder', 'uploadUrl' => '@web/uploadfolder', 'imageAllowExtensions'=>['jpg','png','gif'] ], ],``
在view/post/_form 文件中是这样写的
``<?= $form->field($model, 'content')->widget(\yii\redactor\widgets\Redactor::className()),[
'clientOptions' => [ 'lang' => 'zh_cn', ] ];?>
``
但还在报错,找不到类,谁能说说问题关键在哪里,Invalid Configuration – yii\base\InvalidConfigException
The configuration for the "modules" component must contain a "class" element.
把类配置写成
'class' => '\yii\redactor\RedactorModule',
这样,也是同样的错误
urlManager和权限还都没有配置呢。
模块组件配置写错地方了,应该和'components' 写平行,而不是包含。
怎么设置显示在编辑器里图片的尺寸,我现在的方法用js动态设置,插件本身有没这样的设置
还有这个编辑器怎么 自定义工具栏呢??
自问自答吧 官方哪里见人家是怎么写的 'buttons' => ['format', 'lists', 'bold', 'italic', 'underline', 'horizontalrule', 'link', 'align'], 与语言配置项写平行。
为什么我的有bug。版本是2.0
选中一行字,按 backspace或delete删除,实际却只删除了一个字。多删几次,偶然会有一次正常。吊暴
我的也这个问题
window下不能粘贴是什么问题