Ошибка обновления Yii crud 400
Я создал CRUD с помощью Gii, я изменил правила доступа и теперь не могу обновить пользовательские данные. Вот что я изменил:
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
Что я делаю не так?
3 answers
Эта ошибка не из-за вашего массива 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
);
}
Действие удаления доступно только по ПОЧТЕ; Вы можете это проверить.
Вы неправильно написали привилегию
Использовать
$user->privileges
Вместо
Yii::app()->user->privilages