[英]Yii - call an action method from another action method
标题可能令人困惑,但这里有代码解释。
根据某些情况,即使用户调用了actionIndex
,我也可能会调用actionContact
。
解决方案:1
public function actionIndex()
{
$a = 5;
if($a == 5){
$this->actionContact();
}
else{
$this->render('index');
}
}
public function actionContact()
{
// Some codes
$this->render('contact');
}
解决方案:2
public function actionIndex()
{
$a = 5;
if($a == 5){
// Repeat code from actionContact method
$this->render('contact');
}
else{
$this->render('index');
}
}
解决方案:3我可以重定向到联系人 url。
我认为,解决方案 1 对我来说效果很好,我更喜欢那样。 但由于我是 yii 的新手,我想知道,如果它是通往 go 的路?
如果没问题,你可以使用forward
http://www.yiiframework.com/doc/api/1.1/CController#forward-detail
public function actionIndex()
{
$a = 5;
if($a == 5){
// Forward user to action "contact"
$this->forward('contact');
}
else{
$this->render('index');
}
}
public function actionContact()
{
// Some codes
$this->render('contact');
}
“重复代码”很少是正确答案。 重定向涉及额外的开销,在我看来,它们应该主要用于响应 POST 操作,而不是像这样。 在这种情况下,我将 go 与解决方案 1。
您可以使用第四个选项,它将索引和联系操作的公共部分重构为第三个方法:
public function common() {
// ...
}
public function actionIndex() {
// ... call $this->common()
}
public function actionContact() {
// ... call $this->common()
}
不过,最佳选择取决于您的具体情况。 例如,当您决定必须调用不同的操作时,您是否也想渲染它的视图?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.