Лучший способ визуализации Zend_Form с существующей разметкой - PullRequest
2 голосов
/ 18 ноября 2009

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

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

Ответы [ 2 ]

11 голосов
/ 18 ноября 2009

Если вы используете те же имена в ручной 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, переход должен быть довольно простым.

1 голос
/ 22 ноября 2009

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

См. Официальное справочное руководство и, более конкретно, эту статью Zend devzone .

...