Можно ли изменить класс действий в Yii2?
Можно ли изменить класс действия Yii2
использует как-то, как вы можете установить класс многих других компонентов в файле конфигурации?
Я хочу расширить этот класс, чтобы добавить к нему другую переменную-член.
Я думаю, что я мог бы просто добавить один к этому в любом случае динамически, но предпочел бы сделать это должным образом.
Изменить: Глядя на список основных компонентов приложения, он не указан, так что не уверен, если это возможно?
2 ответа
Надлежащим способом решения этой проблемы является расширение классов контроллера и действий. Если вы посмотрите на исходный код, yii\base\Controller
имеет createAction
метод, который, если действие класса не найдено, создаст экземпляр InlineAction
,
Поскольку вы расширяете какой-то класс контроллера каждый раз, когда создаете свой собственный контроллер (class MyController extends Controller
), вы можете просто переопределить оригинал createAction
метод и в нем использовать свою собственную реализацию InlineAction
учебный класс.
Это можно сделать с помощью карты классов
Yii::$classMap['yii\base\InlineAction'] = '@common/InlineAction.php';
и должен быть помещен в index.php
до запуска приложения.
Независимо от его местоположения, common/InlineAction.php
должен иметь то же самое yii\base
Пространство имен в качестве исходного класса.