Redactor
使用redactor遇到的问题:
问题描述:
配置文件配置的情况:
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '@webroot/uploads',
'uploadUrl' => '@webroot/uploads',
'imageAllowExtensions' => ['jpg', 'png', 'gif']
],
当请求上传的操作的时候就一直报这个错误:
Call to a member function saveAs() on null"
解决的方法:
参考的博客:
将上传的路径uploadUrl
给改成了,配置好的一个虚拟主机的路径。参考如下
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '@webroot/uploads',
'uploadUrl' => 'http://images.blog.com',
'imageAllowExtensions' => ['jpg', 'png', 'gif']
],
本人在配置虚拟主机的路径,与uploadDir要对应的上。
附:
使用Readactor
首先composer安装:
composer require --prefer-dist yiidoc/yii2-redactor "*"
(注意:如果是从 https://github.com/yiidoc/yii2-redactor 上下载压缩包,要进行配置,不然会出问题,所以首选composer安装,省事)
接下来是在配置文件中配置:
'modules' => [ 'redactor' => [ 'class' => 'yii\redactor\RedactorModule', 'uploadDir' => '上传目录', 'uploadUrl' => '图片可访问地址', 'imageAllowExtensions'=>['jpg','png','gif'] ], ],
(注意:我用的是advanced版,上传目录竟然只能是该编辑器所在的backend目录,不能定义在frontend。既然是advanced版,自然不应该让前台用户也通过图片地址得到后台登录地址,所以,经过问大牛,得到一个解决办法)
解决办法就是给backend/web/uploads在虚拟主机设置访问路径http://images.blog.com。注意:uploadUrl必须带上http://,不然不成功:
'modules' => [ 'redactor' => [ 'class' => 'yii\redactor\RedactorModule', 'uploadDir' => '@webroot/uploads', 'uploadUrl' => 'http://images.mybigweb.bb', 'imageAllowExtensions'=>['jpg','png','gif'] ], ],
在view层:
<?= $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'] ] ]) ?>
(注意: ‘plugins’ => [‘clips’, ‘fontcolor’,’imagemanager’] 可能使程序不成功)
必须注意的是:要开启php.ini中的extension=php_fileinfo.dll扩展
前面操作顺利的小伙伴会发现 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; }