Можно ли изменить класс действий в 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 Пространство имен в качестве исходного класса.

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