我有两个基本相同的操作,但需要不同的 URL。通常我会使用 _forward()
来呈现其他操作:
class MyController extends Zend_Controller_Action
{
public function actionOneAction()
{
$this->_forward('action-two');
}
public function actionTwoAction()
{
$this->view->foobar = 'foobar';
}
}
但是,我在 preDispatch()
中发生了一些代码,我只想执行一次:
class MyController extends Zend_Controller_Action
{
public function preDispatch()
{
//execute this only once before actionOne or actionTwo, but not both
}
public function actionOneAction()
{
$this->_forward('action-two'); //this won't work because preDispatch() will get called a second time
}
public function actionTwoAction()
{
$this->view->foobar = 'foobar';
}
}
所以我想也许我可以直接调用该函数,如下所示:
class MyController extends Zend_Controller_Action
{
public function preDispatch()
{
//execute this only once before actionOne or actionTwo, but not both
}
public function actionOneAction()
{
$this->actionTwoAction(); //execute the same code as actionTwoAction()
}
public function actionTwoAction()
{
$this->view->foobar = 'foobar';
}
}
但是现在 Zend Framework 提示无法找到 action-one.phtml
View 脚本。我不想渲染 actionOne 的 View 脚本。我想渲染actionTwo 的 View 脚本。我需要做什么?
最佳答案
使用render()
似乎可以解决问题:
public function actionOneAction()
{
$this->actionTwoAction(); //execute the same code as actionTwoAction()
$this->render('action-two'); //renders the same view as actionTwoAction()
}
关于zend-framework - Zend 框架 : How to render a different action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503724/