Yii2 如何从视图中调用控制器动作
Yii2 How to call controller action from the view
我在控制器中有一个函数可以按照我想要的方式处理数据。现在我想在 view
的 index.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) ?>
我在控制器中有一个函数可以按照我想要的方式处理数据。现在我想在 view
的 index.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) ?>