Как создать форму в Zend - PullRequest
1 голос
/ 12 июня 2011

Я слежу за этим потоком, чтобы создать форму, и он работает, когда известно количество элементов формы. Теперь я должен создать поля формы на основе выбора пользователя.

Например:

<?php 

class Form_MyForm extends Zend_Form {

   public function __construct( $options = null ) {

        parent::__construct( $options );

        // Set the method for the display form to POST
        $this->setMethod('post');

        $elements = array();

        // Get user input to create elements
        $fields = $options['columns'];

        // Create form elements
        for( $i = 0; $i < count( $fields ); $i++ ) {
            $element = $this->CreateElement('text', 'field'.$i );
            $element->setLabel( $fields[$i]['name'] );
            $elements[] = $element;
        }

        $this->addElements( $elements );
        $this->setElementDecorators( array( 'ViewHelper' ) );
        $this->setDecorators( array( array( 'ViewScript', array( 'viewScript' => 'myform-form.phtml' ) ) ) );

    } // end construct


} // end class
?>

Я могу визуализировать каждый элемент отдельно , но теперь я не знаю, как визуализировать эти элементы в myform-form.phtml с помощью цикла. Я должен зациклить, потому что нет. Поля неизвестны в начале ..

Спасибо

Ответы [ 2 ]

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

следует использовать что-то вроде этого (не проверял)

<?
foreach ($this->element->getElements() as $element){
    echo $this->{$element->helper}(
        $element->getName(), 1, $element->getAttribs()
    )
}
?>

$this->element должна быть вашей формой

0 голосов
/ 12 июня 2011

Примечание для начала. Обычно все это делается в методе init() вместо переопределения конструктора формы. Но это не так уж важно.

Re: рендеринг полей с использованием скрипта вида ViewScript decorator: В myform-form.phtml кажется, что вы могли бы вызвать $this->getOption('columns') и затем выполнить цикл foreach для визуализации элементов, аналогично циклу, который вы используется для создания полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...