使用XML作为配置将<select>表单元素描述为Zend_Form的正确语法是什么?</select>

时间:2010-05-20 17:37:24

标签: php xml zend-framework zend-form

我正在使用XML配置文件告诉Zend_Form我想要什么元素。我想要一个<select>元素,但我不确定如何使用XML语法添加<option>标记。

当然,我遗漏了一些非常基本的东西。

1 个答案:

答案 0 :(得分:1)

ZF中的程序化表单仅支持表单元素的参数类型,名称和选项(不是选项的含义,而是元素设置的含义,如必需或标签)。假设将动态设置多个值,例如:

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

当然,有可能使用您自己的名称约定在XML文件中实际设置元素选项(Zend_Form将忽略它们),然后从那里加载它们而不是在运行时进行硬编码或检索:例如: / p>

<?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()
);

然而,这似乎并不比将这些选项存储在其他地方更有效。