Yii2 runAction 调用其他控制器方法及传递参数

Yii2 runAction 调用其他控制器方法及传递参数

Yii2 runAction 方法用于调取本控制器或者其他控制器的方法并执行。今天在更新纯静态页的时候用到了它,就整理了一下使用方法及参数。

runAction 调用方法

在同一模块、同一控制器里
public function actionIndex()
{
    $this->runAction('test');
}

public function actionTest()
{
var_dump(‘这是 site 控制器下的 test 方法’);
}

访问index方法的结果:string(39) “这是 site 控制器下的 test 方法”

在同一模块、不同控制器里
// IndexController.php
public function actionIndex()
{
    Yii::$app->runAction('test/index');
}

// TestController.php
function actionIndex()
{
var_dump(‘这是 test 控制器下的 index 方法’);
}

调用 Index 控制器的 index 方法:string(41) “这是 test 控制器下的 index 方法”

在不同模块下
//frontend\controllers\IndexController.php
function actionIndex()
{
    (new \backend\controllers\SiteController($this->id, $this->module))->runAction('index');
}

//backend\controllers\SiteController.php
function actionIndex()
{
var_dump(‘这里是 backend 模块下的 index 控制器 index 方法’);
}

调用 frontend 模块下的 index 方法:string(59) “这里是 backend 模块下的 index 控制器 index 方法”

runAction 传递参数

参数使用 runAction 方法的第二个参数进行传递。

public function actionIndex()
{
    $this->runAction('test', ['params1'=>'1','params2'=>'2']);
}

public function actionTest($params1, KaTeX parse error: Expected '}', got 'EOF' at end of input: … 控制器下的 test 方法,params1的参数是:’. p a r a m s 1. < s p a n c l a s s = " h l j s − s t r i n g " > ′ , params1.<span class="hljs-string">', params1.<spanclass="hljsstring">params2的参数是 '.KaTeX parse error: Expected 'EOF', got '}' at position 11: params1); }̲</code></pre><p…params1的参数是:1,$params2的参数是 1"

另外需要注意的两点:

  1. 参数值不能为数组,只能是字符串。
  2. 参数如果不传递,被调用方法必须有默认值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游鱼_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值