У меня есть два действия, которые по существу идентичны, но нуждаются в разных 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. Я хочу сделать скрипт вида actionTwo. Что мне нужно сделать?