是否可以从后端运行前端控制器的操作?
如果被调用的动作也在后端,则此代码有效。我可以在runAction中指定控制器/操作是否在前端?
Yii::$app->runAction('controller/action')
我也试过像
这样的东西$c=new controller();
$s->action();
但它似乎也不起作用。 // new controller()需要一些参数,我不知道它是什么。
答案 0 :(得分:1)
>>> while 2 in x : x.remove(2)
对象有一个公共属性yii\base\Application
,默认为controllerNamespace
。您需要相应地更改它以更改默认控制器命名空间。
更改操作中的命名空间:
Yii :: $ app-> controllerNamespace ='frontend \ controllers'并使用runAction
答案 1 :(得分:0)
可能就是这样。
在后端应用程序配置中,您可以创建一个额外的“UrlManager”组件 name例如:urlManagerFrontEnd
return [
'components' => [
'urlManager' => [
// here is your backend URL rules
],
'urlManagerFrontEnd' => [
'class' => 'yii\web\urlManager',
'baseUrl' => 'http://your_path/frontend/web/index.php',
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
];
然后你应该调用以下来组成前端URL:
Yii::$app->urlManagerFrontEnd->createUrl();
并添加您喜欢的控制器/操作
记得那个
runAction()
使用指定的操作ID和操作在此控制器中运行操作 参数。
http://www.yiiframework.com/doc-2.0/yii-base-controller.html#runAction()-detail
这意味着无法运行其他控制器或其他应用程序的操作..
如果您需要服务,则必须配置RESTFull,或者只需要重定向即可使用重定向