Можно ли изменить класс действия в Yii2?

Возможно ли изменить класс действий Yii2 каким-то образом, похожим на то, как вы можете установить класс многих других компонентов в файле конфигурации?

Я хочу расширить этот класс, чтобы добавить в него еще одну переменную-член .

Наверное, я мог бы просто добавить его в любом случае динамично, но предпочел бы делать это по-надлежащему.

Изменить: если посмотреть на список основных компонентов приложения, он не указан, поэтому не уверен, что это возможно?

Правильный способ решения этой проблемы состоит в том, чтобы расширить классы контроллера и действия. Если вы посмотрите на исходный код, yii\base\Controller имеет метод createAction который, если никакого действия класса не будет найден, создаст экземпляр InlineAction .

Поскольку вы расширяете какой-либо класс контроллера каждый раз, когда вы создаете собственный контроллер ( class MyController extends Controller ), вы можете просто переопределить оригинальный метод createAction и в нем использовать собственную реализацию класса InlineAction .

Это можно сделать с помощью карты классов

 Yii::$classMap['yii\base\InlineAction'] = '@common/InlineAction.php'; 

и должны быть помещены в index.php , прежде чем приложение будет запущено.

Независимо от его местоположения, common/InlineAction.php должен иметь такое же пространство имен common/InlineAction.php yii\base что и исходный класс.