githubjeka / yii2-tutorial

Yii2 учебное руководство, мануал по созданию сайта на русском языке.
Other
131 stars 31 forks source link

Ошибка в шаге 0,3 #18

Closed Carsak closed 8 years ago

Carsak commented 8 years ago

Не мог понять в чем ошибка. Шаг step-0.3. При повторном опросе не бросалось исключение. Редактировал сначала в Sublime. Затем перешел на PHPstorm и он сразу показал ошибку.

classAccessOnce extends Behavior
{
    public function events()
    {
        $owner = $this->owner;
        if ($owner instanceof Controller) {
            return [
                $owner::EVENT_BEFORE_ACTION => 'имя_обработчика',
                $owner::EVENT_AFTER_ACTION => 'имя_обработчика',
            ];
        }

        return parent::events();
    }
}

Правильно будет

if ($owner instanceof \yii\web\Controller) {
            return [
                $owner::EVENT_BEFORE_ACTION => 'checkAccess',
                $owner::EVENT_AFTER_ACTION => 'closeDoor',
            ];
        }

То есть не указан неймспейс класса Controller. Из за этого результат проверки всегда была false. Другая более легкая ошибка.

throw new HttpException(403, $this->message);
// правильно
throw new \yii\web\HttpException(403, $this->message);

Тоже не был указан неймспейс. Но здесь уже сам фреймворк подскажет. А на первую ошибку не ругается, из за этого пришлось потратить время на проверку всего остального.

githubjeka commented 8 years ago

Я думал, что use уже сами додумаете использовать - https://github.com/githubjeka/yii2-tutorial/blob/79f3e26e6e860502fdc973fed3ce39bee0c86bf2/yii2-app-advanced/frontend/behaviors/AccessOnce.php#L6

Спасибо, поправлю это в тексте шага.

githubjeka commented 8 years ago

Поправил