zf2-smarty3 получить фактическое значение html элементов, созданных Zend\Form

Я использую ZF2 в нашем проекте, и недавно мы интегрировали его в систему шаблонов Smarty. Мы уже сделали формы для наших представлений с помощью встроенной в ZF2 Zend\Form. Мой вопрос: как я могу получить фактическое значение HTML (<input type="text">...) на уровне контроллера всех элементов формы, созданных Zend\Form ZF2? Поскольку Smarty3 по умолчанию не разрешает теги PHP на стороне шаблона, я не могу просто использовать:

$form = $this->form;
$form->setAttribute('action', $this->url($property_folder, array('action' => $property_folder)));
$form->setAttribute('class', 'searchform');
$form->prepare();
. . .

Если бы я мог извлечь фактическое значение HTML из элементов формы, это очень помогло бы повторно использовать их в других шаблонах/темах, которые пожелал пользователь.

Заранее спасибо!


person eli_daxs    schedule 29.01.2013    source источник
comment
возможно, возьмите html из источника веб-страницы ..??   -  person Patrioticcow    schedule 29.01.2013
comment
Спасибо @Patrioticcow за предложение, но, к сожалению, я говорю об уровне контроллера, страница еще не отрисована.   -  person eli_daxs    schedule 29.01.2013


Ответы (1)


Хорошо, после повторного чтения я предполагаю, что вам нужна полная строка HTML элемента формы, а не значение элемента. Это тоже возможно и просто требует, чтобы вы получили доступ к обновлению ViewHelper внутри вашего контроллера. Это делается следующим образом:

$viewHelperManager = $sm->get('viewhelpermanager');
$formElementRenderer = $viewHelperManager->get('formElement');

$elementHtml = $formElementRenderer($form->get('element'));

Очевидно, что ViewHelper можно использовать больше. Вы можете узнать, какие они, проверив Zend\Form\View\HelperConfig

person Sam    schedule 29.01.2013
comment
Спасибо @Sam, но я думаю, что функция getValue() возвращает только значение этого элемента, извините, если мой вопрос не так ясен. Например, у меня есть текстовое поле, добавленное в мой ApplicationForm.php, я хочу получить <input type="text">...etc. на уровне контроллера. - person eli_daxs; 29.01.2013
comment
Итак, вам нужна полная HTML-строка элемента? - person Sam; 29.01.2013
comment
Да, правильно ли это? Или мне ничего не остается, как выкинуть на помойку то, что мы сделали на хелпере ZF2 Zend\Form, и просто создать функцию, которая каким-то образом делает это для Smarty? - person eli_daxs; 29.01.2013
comment
@eli_daxs Я отредактировал ответ, проверьте, соответствует ли он вашим требованиям. Я не проверял, но должно сработать надеюсь - person Sam; 29.01.2013
comment
Ух ты! Красиво, работает! Большое спасибо @Sam! Это сэкономит время. Данке! :) - person eli_daxs; 29.01.2013