是否可以從後端運行前端控制器的動作?如何從yii2的後端運行前端控制器的動作
如果被調用的動作在後端,此代碼也可以工作。我可以在runAction中指定控制器/操作是在前端嗎?
Yii::$app->runAction('controller/action')
而且我是試過類似
$c=new controller();
$s->action();
太多,但現在看來,這不是工作壓力太大。 //新的控制器()需要一些參數,我不知道它是什麼。
是否可以從後端運行前端控制器的動作?如何從yii2的後端運行前端控制器的動作
如果被調用的動作在後端,此代碼也可以工作。我可以在runAction中指定控制器/操作是在前端嗎?
Yii::$app->runAction('controller/action')
而且我是試過類似
$c=new controller();
$s->action();
太多,但現在看來,這不是工作壓力太大。 //新的控制器()需要一些參數,我不知道它是什麼。
yii\base\Application
對象有一個公共屬性controllerNamespace
,默認爲app\\controllers
。您需要相應地更改它以更改默認控制器名稱空間。
更改命名空間在行動:
的Yii :: $ APP-> controllerNamespace = '前端\控制器',並使用runAction
一種方式可能是這樣的。
在你的後臺應用程序的配置,你可以創建一個額外的「UrlManager」組件 名稱,如: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,
],
],
];
那麼你應該調用以下組成前端網址:
Yii::$app->urlManagerFrontEnd->createUrl();
和添加控制器/您喜歡的動作
請注意
runAction()
運行此控制器與所述指定的操作ID和 參數內的動作。
http://www.yiiframework.com/doc-2.0/yii-base-controller.html#runAction()-detail
這意味着無法運行其他控制器或其他應用程序的作用..
如果你需要服務的話,你必須配置的REST類型的,或者你只是需要一個重定向可以使用重定向
感謝,但createurl()返回一個字符串,如「前臺/控制器/行動'。在runAction()中使用此字符串也不起作用。 – user677900
你可以使用重定向.. – scaisEdge
實際上我需要runAction()在後臺控制器中的結果。我想知道如何重定向可以幫助? – user677900
謝謝你@Cap,工作完美。正確的命名空間是'backend \ controllers'與\ – user677900
對不起,我從手機寫的 – Cap