Yii crud更新错误400


Yii crud update error 400

我用Gii创建了CRUD,修改了访问规则,现在无法更新用户数据。以下是我修改的内容:

public function accessRules()
{
    return array(
        array('allow',
        'users'=>array('@'),
        'expression'=>'!$user->isGuest && Yii::app()->user->privilages >= 5 && Yii::app()->user->status == 1',
        ),
        array('deny',
        'users'=>array('*'),
        ),
    );
}

其他一切都像默认的一样,但当我按下管理用户表上的铅笔图标时,我会得到这个错误:

Error 400
Your request is invalid.

url为:

http://www.example.com/admin/update/35

我做错了什么?

此错误不是因为您的accessRules数组。检查您是否正确命名了相应的操作,检查操作的参数是否正确,检查您的配置文件中的url规则,即urlManager,检查您是否从链接正确发送了参数。

也可以直接使用$user而不是Yii::app()->user

如果存在授权错误,则会得到错误403。这是400:

400错误的请求由于语法错误,请求无法完成。

编辑:将此添加到您的urlManager:

'rules'=>array(
         '<controller:'w+>/<id:'d+>'=>'<controller>/view',
         '<controller:'w+>/<action:'w+>/<id:'d+>'=>'<controller>/<action>', // this is the rule you absolutely need for update to work
         '<controller:'w+>/<action:'w+>'=>'<controller>/<action>',
         '<action>'=>'site/<action>'
),
/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}

删除操作只能通过POST访问;你可以检查一下。

您拼写的特权错误

使用

$user->privileges

而不是

Yii::app()->user->privilages