Ошибка обновления 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

Что я делаю не так?

Author: bolav, 2012-03-15

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>'
),
 6
Author: bool.dev, 2012-03-15 15:27:19
/**
 * @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
    );
}

Действие удаления доступно только по ПОЧТЕ; Вы можете это проверить.

 6
Author: Yueyu, 2013-08-15 12:29:15

Вы неправильно написали привилегию

Использовать

$user->privileges

Вместо

Yii::app()->user->privilages
 0
Author: Michael, 2012-03-15 21:21:01