是否可以以某种方式更改action class Yii2
使用,类似于如何在配置文件中设置许多其他组件的类?
我想扩展这个类,以便我可以添加另一个成员变量。
我想我可以动态添加一个,但更愿意以适当的方式进行。
修改:查看core application components列表未列出,所以不确定是否可能?
答案 0 :(得分:1)
可以使用class map
完成Yii::$classMap['yii\base\InlineAction'] = '@common/InlineAction.php';
并应在应用启动之前放入index.php
。
无论其位置如何,common/InlineAction.php
都应具有与原始类相同的yii\base
命名空间。
答案 1 :(得分:1)
解决此问题的正确方法是扩展控制器和操作类。如果您查看源代码,yii\base\Controller
有createAction
方法,如果未找到类操作,则会创建InlineAction
的实例。
由于您每次创建自己的控制器(class MyController extends Controller
)时都会扩展某种类型的控制器类,因此您可以覆盖原始的createAction
方法,并在其中使用您自己的实现InlineAction
班。