Zend框架:Zend表单选择使用MultiOptions生成详细HTML

时间:2010-08-06 19:26:09

标签: php zend-framework zend-form zend-form-element

我有一个表单,我试图添加一个简单的选择元素使用以下PHP:

$dateFormat = new Zend_Form_Element_Select('dateFormat');
        $dateFormat->setLabel('Date Format:');
        $dateFormat->setRequired(true)->addValidator('NotEmpty');
        $dateFormat->addMultiOptions(array(
            'MM/dd/yyyy' => "US Standard         - MM/dd/yyyy",
            'dd/MM/yyyy' => "Int'l Standard      - dd/MM/yyyy",
            'MM-dd-yyyy' => "US Standard Dash    - MM/dd/yyyy",
            'dd-MM-yyyy' => "Int'l Standard Dash - dd/MM/yyyy",
        ));
        $this->addElement($dateFormat,'dateFormat');

它呈现给页面很好,但它生成以下XML:

<dt id="dateFormat-label"><label for="dateFormat" class="required">Date Format:</label></dt>
<dd id="dateFormat-element">
<select name="dateFormat" id="dateFormat">
    <option value="MM/dd/yyyy" label="US Standard         - MM/dd/yyyy">US Standard         - MM/dd/yyyy</option>
    <option value="dd/MM/yyyy" label="Int'l Standard      - dd/MM/yyyy">Int'l Standard      - dd/MM/yyyy</option>
    <option value="MM-dd-yyyy" label="US Standard Dash    - MM/dd/yyyy">US Standard Dash    - MM/dd/yyyy</option>

    <option value="dd-MM-yyyy" label="Int'l Standard Dash - dd/MM/yyyy">Int'l Standard Dash - dd/MM/yyyy</option>
</select></dd>

为什么在..label="..."标记中添加<option>?这实际上是如何为XHTML标准完成的吗?我将我的doctype设置为XHTML Strict。

2 个答案:

答案 0 :(得分:0)

如果您要问的是,标签标签是否有效xhtml strict。您可以通过验证程序运行HTML。进行谷歌搜索我想出了this website,它谈到了XHTML严格标准中的标签标签。值得一读,但我相信它是有效的XHTML严格。

但是如果你想验证它W3C Validator Tool并查看它是否被允许/抛出验证错误。

如果您要删除它this SO Topic可能对您有所帮助。

答案 1 :(得分:0)

可以有选择地删除额外的标签。我在下面给出了一个示例,它删除了隐藏元素的所有不必要的装饰器:

<?php
...
public function init()
{
...

 $this->addElement(new Zend_Form_Element_Hidden('configId'));
        $cid = $this->getElement('configId');
        $cid->removeDecorator('DtDdWrapper');
        $cid->removeDecorator('HtmlTag');
        $cid->removeDecorator('Label');
        $cid->setRequired(true);
}
...
?>