Ошибка обновления Yii Crud 400 - PullRequest
3 голосов
/ 15 марта 2012

Я создал 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 ]

6 голосов
/ 29 ноября 2012
/**
 * @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;Вы можете проверить это.

6 голосов
/ 15 марта 2012

Эта ошибка не из-за вашего accessRules массива.Убедитесь, что соответствующее действие названо правильно, проверьте, правильно ли указаны параметры действия, проверьте в файле конфигурации правила для URL, т.е. urlManager, проверьте, правильно ли вы отправляете параметр по ссылке.

Также вы можете использовать $user напрямую вместо Yii::app()->user.

Если есть ошибка авторизации, вы получите ошибку 403. Это 400 :

400 Bad Request Запрос не может быть выполнен из-за неверный синтаксис .

Редактировать: Добавить это в свой 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 голосов
/ 16 марта 2012

Вы указали неправильную привилегию

Используйте

$user->privileges

вместо

Yii::app()->user->privilages
...