У меня есть помощник вида, как показано ниже, и он работает отлично:
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>
<div><?php echo $this->list($this->type);?></div>
, но он выглядит грязным и не прав!
Вы можете поместить своих помощников в папку view/helpers
конкретного контроллера, чтобы он был видимым только для этого контроллера.
Вы также можете добавить новый путь для помощников $this->view->setHelperPath('MyScripts/View/Helper/','MyScripts_View_Helper');
если вам нужно изменить его за действие.
Если вы хотите иметь только один помощник вида, вы можете эффективно использовать переменные.
Вы можете попробовать что-то вроде этого:
В вашем действии foo:
$this->view->type = 'action_foo';
В вашем помощнике просмотра:
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
}