Yii2 如何从视图中调用控制器动作

Yii2 How to call controller action from the view

我在控制器中有一个函数可以按照我想要的方式处理数据。现在我想在 viewindex.php 文件中调用该函数。我该怎么做?

在我的控制器中

function actionTesting($params){
    .....
}

如何在视图中调用它...

<?php
   echo $this->testing($params);//Calling unknown method: yii\web\View::testing()
?>

您不应该从视图中调用控制器操作。我认为它违反了 MVC 模式。

至于错误,很明显,视图中的$this指的是yii\web\View,而不是控制器,testing方法显然不存在。

之前有人问过 similar question,这是可能的解决方案(感谢 Manesh):

Yii::$app->runAction('controller/action', ['param1' => 'value1', 'param2' => 'value2']);

仅仅像通常的方法调用一样调用控制器操作是不够的,因为需要应用一些事件等。

我不建议使用这种方法,最好根据它的类型将你的逻辑移动到组件/模型。

你可以用这个。

echo $this->context->testing($params); 

致谢 Metacrawler 原问题 link

你可以这样做

 $parse = array(
   ...............
   'aliasName' => $this,
   ..............
);
return $this->render('viewFile',$parse);

然后你可以像

这样调用函数
<?php echo $aliasName->testing($param) ?>