可以在Yii2中更改动作类吗?

时间:2015-08-07 10:33:34

标签: php yii yii2

是否可以以某种方式更改action class Yii2使用,类似于如何在配置文件中设置许多其他组件的类?

我想扩展这个类,以便我可以添加另一个成员变量

我想我可以动态添加一个,但更愿意以适当的方式进行。

修改:查看core application components列表未列出,所以不确定是否可能?

2 个答案:

答案 0 :(得分:1)

可以使用class map

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

并应在应用启动之前放入index.php

无论其位置如何,common/InlineAction.php都应具有与原始类相同的yii\base命名空间。

答案 1 :(得分:1)

解决此问题的正确方法是扩展控制器和操作类。如果您查看源代码,yii\base\ControllercreateAction方法,如果未找到类操作,则会创建InlineAction的实例。

由于您每次创建自己的控制器(class MyController extends Controller)时都会扩展某种类型的控制器类,因此您可以覆盖原始的createAction方法,并在其中使用您自己的实现InlineAction班。