0

次の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>

なぜタグに a..label="..."を入れるのですか?<option>これは実際に XHTML 標準で行われるはずの方法ですか? doctype を XHTML Strict に設定しています。

4

2 に答える 2

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);
}
...
?>
于 2010-09-10T20:49:42.443 に答える
0

あなたが求めているのは、ラベルタグが有効なxhtml strictであるかどうかだけです。バリデーターを介して HTML を実行できます。Google 検索を行って、XHTML Strict 標準のラベル タグについて説明しているこの Web サイトを思いつきました。読む価値はありますが、有効な XHTML Strict だと思います。

ただし、それを検証したい場合は、W3C Validator Toolを使用して、許可されているかどうかを確認し、検証エラーをスローします。

削除する場合は、この SO トピックが役立ちます。

于 2010-08-06T19:55:46.383 に答える