Yii2 beforeAction

Yii2 beforeAction

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы познакомимся с темой Yii2 beforeAction. Данный метод пригодится вам в тех случаях, когда вы захотите выполнить некоторый код перед любым из действий.

В одной из предыдущих статей мы с вами знакомились с полезным методом beforeSave. Напомню, данный метод вызывается перед методом save и может быть полезен нам в тех случаях, если мы хотим выполнить некоторые действия перед записью данных в БД.

Метод сегодняшней статьи — beforeAction — похож на предыдущий и, полагаю, вы уже догадались, в какой именно момент выполняется beforeAction… правильно, данная функция будет вызываться перед обращением к любому экшену.

Что это нам дает? Здесь все уже зависит от решаемых вами задач. Я приведу в статье лишь один пример использования beforeAction, который должен сделать понятной суть функции. Для начала давайте напишем этот метод в нужном нам контроллере.

public function beforeAction($action)
{
    return parent::beforeAction($action);
}

В таком виде на вашем сайте ничего не должно измениться. Этим кодом мы просто перегрузили beforeAction и внутри нашего метода вызвали родительский. При этом пока что ничего больше мы и не делаем. В качестве параметра принимается $action, в которой хранится объект с массой свойств полезных и не очень. При желании можете распечатать данный объект и изучить его.

public function beforeAction($action)
{
    var_dump($action); die;
    return parent::beforeAction($action);
}

Среди прочего в этом объекте есть свойства actionMethod и id, в которых хранится название текущего экшена. Например, для главной страницы сайта они будут такими:

Yii2 beforeAction

Что это нам дает? Да то, что в зависимости от страницы (экшена) мы можем выполнить код или не выполнять его. И один из классических примеров, который показывался в предыдущей статье:

public function beforeAction($action)
{
    if (in_array($action->id, ['index'])) {
        $this->enableCsrfValidation = false;
    }
    return parent::beforeAction($action);
}

Смысл выполняемого кода следующий: если наименование действия, которое должно быть сейчас выполнено, входит в массив перечисленных (в примере выше это только один index), тогда необходимо выключить проверку CSRF-токена.

В общем, ничего сложного. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree