如何在yii2

时间:2016-11-22 21:00:40

标签: yii2

是否可以从后端运行前端控制器的操作?

如果被调用的动作也在后端,则此代码有效。我可以在runAction中指定控制器/操作是否在前端?

Yii::$app->runAction('controller/action')

我也试过像

这样的东西
$c=new controller();
$s->action();

但它似乎也不起作用。 // new controller()需要一些参数,我不知道它是什么。

2 个答案:

答案 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,或者只需要重定向即可使用重定向