2009-11-18 2 views
2

Я хочу использовать Zend_Form из-за его проверки и фильтрации и т. Д. Но разметка для форм уже выполнена. Хуже того, он не очень стандартизирован, поэтому писать мои собственные декораторы не является решением.Лучший способ визуализации Zend_Form с существующей разметкой

Есть ли простой способ «применить» Zend_Form к существующей очень настраиваемой разметке? Я думаю, что это обычная проблема.

ответ

11

Если вы используете одни и те же имена в вашей ручной-HTML-форме, как в вашем Zend_Form вы можете просто создать экземпляр формы на приеме данных:

public function processFormAction() 
{ 
    $form = new My_Form(); // this is your Zend_Form 
    if ($form->isValid($_POST)) { 
     // success! 
    } else { 
     // failure! 
    } 
} 

Там нет необходимости использовать возможности рендеринга Zend_Form если вы этого не хотите.

Второго варианта совместить собственную разметку с элементами формы в:

// view-script with $form being the the Zend_Form passed into the view 
<form method="<?php echo $form->getMethod() ?>" action="<?php echo $form->getAction()?>"> 
    <div id="elements"> 
     <?php echo $form->element1->renderLabel() . $form->element1->renderViewHelper() ?> 
     <br /> 
     <?php echo $form->element2->renderLabel() . $form->element2->renderViewHelper() ?> 
    </div> 
    <div id="buttons"> 
     <?php echo $form->button1->renderViewHelper() ?> 
     &nbsp; 
     <?php echo $form->button2->renderViewHelper() ?> 
    </div> 
</form> 

В качестве альтернативы, если вы хотите, чтобы фильтровать и проверять введенные данные, вы можете избежать всех наворотов из Zend_Form и использовать Zend_Filter_Input, который есть, просто говорят, Zend_Form без всякой разметки. Поскольку Zend_Filter_Input может использовать все стандартные и настраиваемые фильтры и валидаторы, которые вы можете использовать с Zend_Form, переход должен быть довольно простым.

+0

Все, что я действительно хочу получить от рендера - это ошибки проверки и значения формы :) –

1

Существует много способов сделать это с помощью декоратора формы ViewScript, специально разработанного для визуализации форм в пользовательскую разметку. Он работает аналогично примеру, указанному Stefan, но вы можете использовать свои собственные скрипты или частичные файлы, и вам нужно сделать гораздо меньше работы, если все, что вы хотите сделать, это поместить элементы, их метки и ошибки в пользовательскую разметку.

См. Official Reference Guide и, более конкретно, Zend devzone article.

Смежные вопросы