ZF_FORM: Как добавить шаблон представления для элемента формы?
Я создал элемент в форме объекта:
function createElement()
{
$template = new Zend_Form_Element_Hidden('field');
$template->addDecorator('ViewScript', array('placement' => 'prepend', 'viewModule' => 'admin', 'viewScript' => 'values.phtml'))
$this->addElement($template);
}
function setViewTemplate($values)
{
$view = new Zend_View();
$view->setScriptPath(APPLICATION_PATH . '/scripts/');
$view->assign('values', $values);
$this->getElement('field')->setView($view);
}
Но в скрипте представления 'values.phtml' я не могу получить доступ к таким значениям, как $this->values. Что я тут не так делаю? Я знаю, что было бы хорошо добавить собственный декоратор, но интересно использовать декораторы Zends.
2 ответа
Решение
Из документации Zend Framework: стандартные декораторы форм, поставляемые с Zend Framework, раздел Zend_Form_Decorator_ViewScript
Кроме того, все параметры, передаваемые декоратору через setOptions(), которые не используются внутри (например, размещение, разделитель и т. Д.), Передаются в сценарий представления как переменные представления.
function setViewTemplate($values)
{
$this->getElement('field')
->getDecorator('ViewScript')
->setOptions('values', $values);
}
Вы можете восстановить его с помощью атрибутов
$template->setAttrib('key', 'value');
и в шаблоне
<?php echo $this->element->getAttrib('key'); ?>