Каков правильный синтаксис для описания элемента формы <SELECT>в Zend_Form с использованием XML в качестве конфигурации? - PullRequest
0 голосов
/ 20 мая 2010

Я использую XML-файл конфигурации, чтобы сообщить Zend_Form, какие элементы я хочу. Я хотел бы иметь элемент <select>, но я не уверен, как добавить теги <option> с использованием синтаксиса XML.

Конечно, я упускаю что-то довольно простое.

Ben

1 Ответ

1 голос
/ 20 мая 2010

Программные формы в ZF поддерживают только тип параметров, имя и параметры (не в смысле выбора, а в настройках элемента, например, как требуется или метка) для элементов формы. Предполагается, что несколько значений будут установлены динамически, например:

$formConfig = new Zend_Config_Xml('/path/to/form.xml');
$form = new Zend_Form($formConfig);
$form->getElement('myselect')->setMultiOptions($arrayOfOptions);

Конечно, есть возможность на самом деле установить параметры элемента в файле XML, используя ваше собственное соглашение об именах (будет игнорироваться Zend_Form), а затем загружать их оттуда вместо того, чтобы жестко кодировать или получать во время выполнения, например:

<?xml version="1.0" encoding="UTF-8"?>
<form>
    <user>
        <example>
            <name>mysampleform</name>
        <method>post</method>
        <elements>
        <myselect>
                <type>select</type>
                <name>myselect</name>
                <multioptions> <!-- custom tag -->
                    <option value="First">1</option>
                    <option value="Second">2</option>
                    <option value="Third">3</option>
                </multioptions>
                <options>
                    <label>Choose an option:</label>                        
                    <required>true</required>
                </options>
            </myselect>
            <submit>
            <type>submit</type>
            <options>
                <value>Submit</value>
            </options>
            </submit>   
        </elements>    
    </example>
</user>

$formConfig = new Zend_Config_Xml('/path/to/form.xml');
$form = new Zend_Form($formConfig);
$form->getElement('myselect')->setMultiOptions(
    $formConfig->user->example->elements->myselect->multioptions->toArray()
);

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

...