ZF_FORM: Как добавить шаблон представления для элемента формы? - PullRequest
0 голосов
/ 03 июня 2011

Я создал элемент в объекте формы:

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 ]

1 голос
/ 03 июня 2011

Из документации Zend Framework: Стандартные декораторы форм, поставляемые с Zend Framework Раздел Zend_Form_Decorator_ViewScript

Кроме того, все параметры передаются декоратору через setOptions (), которые не используются внутри (например, размещение, разделитель и т. д.), передаются в сценарий представления в качестве переменных представления.

function setViewTemplate($values)
{
     $this->getElement('field')
          ->getDecorator('ViewScript')
          ->setOptions('values', $values);
}
1 голос
/ 03 июня 2011

вы можете восстановить его с помощью атрибутов

$template->setAttrib('key', 'value');

и в шаблоне

<?php echo $this->element->getAttrib('key'); ?>
...