Zend Form Как сгруппировать такой элемент? - PullRequest
2 голосов
/ 11 ноября 2011

Я создал Zend форму. Я хочу сделать группу элементов, которые выводят html следующим образом:

           <div class="form_wrapper">
                <div class="form_label">
                    <label class="txtlabel" for="salary_type">Salary type</label>
                    <span>*</span>
                </div>
                <div class="form_element">
                    <select class="jp_select" id="salary_type" name="salary_type">
                        <option>..1..</option>  
                        <option>2</option>  
                        <option>3</option>  
                    </select>
                    <input type="text" id="salary_min" class="txtinput" name="salary_min" value="Min" onfocus="if(this.value=='Min') this.value='';" onblur="if(this.value=='') this.value=('Min');">
                    <input type="text" id="salary_max" class="txtinput" name="salary_max"  value="Max" onfocus="if(this.value=='Max') this.value='';" onblur="if(this.value=='') this.value=('Max');">
                </div>
            </div> <!-- end .form_wrapper -->

Мой код:

 $this->addElement('select', 'salary_type', array(
            'label' => 'Salary type',
            'multiOptions' => $salary_types,
            'class'=>'jp_select'
        ));

        $this->addElement('text', 'salary_min', array(
            'label' => 'Min',
            'class'=>'txtinput'
        ));

        $this->addElement('text', 'salary_max', array(
            'label' => 'Max',
            'class'=>'txtinput'
        ));

$this->addDisplayGroup(array('salary_type','salary_min','salary_max'), 'salary_group');

Как настроить декораторы на вывод html, как указано выше

1 Ответ

3 голосов
/ 06 января 2012

Насколько я знаю, вы не можете отобразить эту точную структуру HTML с помощью одних только простых декораторов.Одним из способов решения этой проблемы является использование декоратора ViewScript внутри стека декораторов displayGroup.В сценарии просмотра вы можете извлечь отдельные элементы, используя $this->element->getElements(); ($ this-> element является экземпляром Zend_Form_DisplayGroup)

Например:

$this->addDisplayGroup(
    array('salary_type','salary_min','salary_max'), 
    'salary_group',
    array(
        'decorators' => array(
            array('ViewScript', array('viewScript' => 'path/to/viewscript.phtml')),
        ),
    )
);

Сам не пробовал, но должно сработать.

...