我用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.
,网址是:
http://www.example.com/admin/update/35
我做错了什么?
答案 0 :(得分:6)
此错误不是因为您的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>'
),
答案 1 :(得分: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
);
}
删除操作只能通过POST访问; 你可以查一下。
答案 2 :(得分:0)
你拼写了特权错误
使用
$user->privileges
而不是
Yii::app()->user->privilages