Yii accessRules выражение не работает

В моем контроллере у меня есть

    /**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
    );
}

/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules()
{
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow', // allow players to comment on games
            'actions'=>array('createComment'),
            'roles'=>array('createComment'),
        ),
  array('allow', // allow users to update and delete their own comments
    'actions'=>array('deleteComment'),
    'expression'=>'return $user->id==Game::model()->findByPk(Yii::app()->getRequest()->getQuery("id"))->author->id;',
  ),
        array('allow', // allow admin users to create, update, delete and manage games
            'actions'=>array('admin','create','update','delete','deleteComment'),
    'roles'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

Но по какой-то причине выражение на deleteComment всегда выдает ошибку 403 (не авторизовано). Хотя я проверил это выражение и стал правдой. Даже если поставить выражение "=", вернуть "истина"; не работает:(Я полностью запутался... Есть идеи? Спасибо, Брэд (:

1 ответ

У вас есть дополнительный return в начале вашего выражения. Yii уже добавляет один, поэтому наличие двух приводит к синтаксической ошибке. Убери свою, и тебе будет хорошо.

Другие вопросы по тегам