Задать вопрос

Как в YII2 сделать выполнение определенного действия во всех контроллерах?

Как только пользователь заходит на любую страницу , надо считывать от куда он пришел, его ip и остальную инфу, как это можно сделать универсально, во всех экшнах?
  • Вопрос задан
  • 558 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@paldraken
Сделать некий базовый контроллер у которого переопределить метод
beforeAction
В этом методе реализовать вашу логику по считыванию информации.
А затем те контроллеры в которых надо применять эту логику унаследовать от Базового.

class BaseController extends \yii\web\Controller
{
    public function beforeAction($action)
    {
        if (!parent::beforeAction($action)) {
            return false;
        }
        // Тут прописать логику или вызвать отслеживающий сервис
        return true;
    }
}

class MyController extends BaseController
{
    public function actionIndex()
    {
.....
Ответ написан
qonand
@qonand
Software Engineer
Как только пользователь заходит на любую страницу , надо считывать от куда он пришел, его ip и остальную инфу, как это можно сделать универсально, во всех экшнах?

Все зависит от того что с этими данными стоит делать и зачем вообще эти данные в контроллерах нужны. Лучше всего реализовать отдельный компонент для этих целей, который будет ловить одно из соответствующих событий приложения и делать необходимые Вам действия
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы