2012-03-15 40 views
3

我用Gii创建了CRUD,我修改了访问规则,现在我无法更新用户数据。以下是我已经修改:Yii crud更新错误400

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 

我在做什么错?

回答

6

这个错误不是因为你的accessRules数组。检查你是否有正确命名的相应动作,检查动作的参数是否正常,检查你的配置文件中的url规则,即urlManager,检查你是否正确地从链接发送参数。您可以直接使用$user而不是Yii::app()->user

如果有授权错误,你会得到错误403.这是400

400 Bad Request The request cannot be fulfilled due to bad syntax.

编辑: 添加到您的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>' 
), 
+0

是的,你是正确的,现在我已经发现问题是因为url,35没有设置为$ id所以现在我正在编写urlManager来解决这个问题 – Irakli 2012-03-15 15:20:55

+1

好吧,我已经添加为了使它正常工作的代码。即第二条规则对于更新工作非常重要,使用那种URL – 2012-03-15 15:27:54

+1

非常感谢,作品像一个魅力。再次感谢你。 – Irakli 2012-03-15 15:43:55

0

你拼写错了特权

使用

$user->privileges 

代替

Yii::app()->user->privilages 
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访问; 你可以检查它。

+0

可以请你帮我怎么通过传递ID来删除我已经在我的过滤器中有相同的代码你在上面提到了什么然后如何克服在这种情况下? – user3233280 2014-06-16 06:48:15