У меня есть View Helper, как показано ниже, и он работает отлично:
class Zend_View_Helper_List extends Zend_View_Helper_Abstract
{
public function list()
{
return '<ul><li>Something Really Good</li></ul>'; // generated html
}
}
У меня есть это в моем глобальном макете myapp.phtml
:
<div><?php echo $this->list(); ?></div>
Мой вопрос, как я могу переопределить list()
в другом контроллере или даже более детально, каждое действие контроллера?
Я попытался установить переменную View в каждом контроллере, например. $this->view->type
а затем передать его в функцию списка <div><?php echo $this->list($this->type); ?></div>
, но выглядит грязно и не правильно!
Вы можете поместить своих помощников в view/helpers
папка определенного контроллера, поэтому она будет видна только для этого контроллера.
Вы также можете добавить новый путь для помощников $this->view->setHelperPath('MyScripts/View/Helper/','MyScripts_View_Helper');
если вам нужно изменить его за действие.
Если вы хотите иметь только один помощник вида, вы можете эффективно использовать переменные.
Вы можете попробовать что-то вроде этого:
В вашем действии:
$this->view->type = 'action_foo';
В вашем View Helper:
public function list()
{
if (isset($this->view->type)){
if ('action_foo' == $this->view->type)
return '<ul><li>Something Really Good for Foo Action</li></ul>'; // generated html
else
return '<ul><li>' . $this->view->type . '</li></ul>'; // generated html
}
else
return '<ul><li>Something Really Good</li></ul>'; // generated html
}