Redactor报Call to a member function saveAs() on null"

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"

解决的方法:

参考的博客:

http://www.yiichina.com/tutorial/1002

将上传的路径uploadUrl给改成了,配置好的一个虚拟主机的路径。参考如下

    'redactor' => [
            'class' => 'yii\redactor\RedactorModule',
            'uploadDir' => '@webroot/uploads',
            'uploadUrl' => 'http://images.blog.com',
            'imageAllowExtensions' => ['jpg', 'png', 'gif']
        ],

本人在配置虚拟主机的路径,与uploadDir要对应的上。

附:

使用Readactor

  1. 首先composer安装:

    composer require --prefer-dist yiidoc/yii2-redactor "*"

    (注意:如果是从 https://github.com/yiidoc/yii2-redactor 上下载压缩包,要进行配置,不然会出问题,所以首选composer安装,省事)

  2. 接下来是在配置文件中配置:

    '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']
        ],
    ],
  3. 在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扩展

  4. 前面操作顺利的小伙伴会发现 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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值