Yii crud更新错误400

Ira*_*kli 3 php frameworks yii

我用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('*'),
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

其他一切都像默认,但当我在管理用户表上按下铅笔图标时,我收到此错误:

Error 400
Your request is invalid.
Run Code Online (Sandbox Code Playgroud)

并且网址是:

http://www.example.com/admin/update/35
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

boo*_*dev 6

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

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

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

400 Bad Request由于语法错误,无法满足请求.

编辑: 将其添加到您的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>'
),
Run Code Online (Sandbox Code Playgroud)


Yue*_*eyu 6

/**
 * @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
    );
}
Run Code Online (Sandbox Code Playgroud)

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