É possível alterar a class de ação Yii2
usa de alguma forma, semelhante a como você pode definir a class de muitos outros componentes dentro do arquivo de configuração?
Eu quero estender essa class para que eu possa adicionar outra variável de membro a ela.
Eu acho que eu poderia apenas adicionar um dele de qualquer forma dinamicamente, mas preferiria fazê-lo de forma adequada.
Editar: Olhando para a lista de componentes principais do aplicativo, ele não está listado, então não tenha certeza se é possível?
A maneira correta de resolver esse problema é estender as classs de controle e de ação. Se você olhar para o código-fonte, yii\base\Controller
possui um método createAction
que, se nenhuma ação de class for encontrada, criará uma instância do InlineAction
.
Uma vez que você está estendendo algum tipo de class de controlador sempre que você faz seu próprio controlador (a class MyController extends Controller
), você pode simplesmente replace o método original createAction
e usar sua própria implementação da class InlineAction
.
Pode ser feito com o mapa da class
Yii::$classMap['yii\base\InlineAction'] = '@common/InlineAction.php';
e deve ser colocado no index.php
, antes do lançamento do aplicativo.
Independentemente da sua localização, common/InlineAction.php
deve ter o mesmo yii\base
namespace como a class original.