2012-03-15 4 views
3

Я создал CRUD с Gii, я изменил правила доступа, и теперь я не могу обновить данные пользователя. Вот что я модифицировал:Ошибка обновления 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. 

и URL является:

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.

Edit: Добавьте это в 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

+1

ok, я добавил код для этого, чтобы он работал правильно. а именно второе правило важно, чтобы сделать работу по обновлению с такого рода URL. –

+1

Большое спасибо, работает как шарм. Еще раз спасибо. – Irakli

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

Смежные вопросы