Zend Form - 在标签的dt上设置类

Chr*_*ris 5 forms zend-framework zend-form

更新我能够通过创建自定义标签装饰器来实现此功能,该装饰器扩展了Zend/Form/Decorator/Label.php.我向它添加了一个setTagClass()方法并覆盖了render方法,以创建带有所需类的封闭标记.可能有一种更优雅的方式,但这似乎有效.

我正在寻找有关如何使用装饰器在标签的dt元素上设置类的信息.下面的第三行代码在标签上设置类,并将标签包装在dt标记中.我想知道如何在dt标签上设置类.

$txtLangPrefOther = $this->createElement('text','langPrefOther');
$txtLangPrefOther->setLabel('Language Preference Other:'));
$txtLangPrefOther->getDecorator('Label')->setOptions(array('tag' => 'dt', 'class' => 'other'));
Run Code Online (Sandbox Code Playgroud)

这会产生诸如的输出

<dt id="langPrefOther-label">
   <label for="langPrefOther" class="other">Language Preference Other:</label>
</dt>

<dd id="langPrefOther-element">
   <input type="text" id="langPrefOther" name="langPrefOther" ">
</dd>
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像

<dt id="langPrefOther-label" class="other">
   <label for="langPrefOther">Language Preference Other:</label>
</dt>

<dd id="langPrefOther-element">
   <input type="text" id="langPrefOther" name="langPrefOther" ">
</dd>
Run Code Online (Sandbox Code Playgroud)

小智 5

有一个Label叫做装饰的属性tagClass!

试试这个:

$element->addDecorators(array( 
'ViewHelper', 
'Description',
'Errors',
array('HtmlTag', array('tag' => 'dd', 'class' => $class )),
array('Label', array('tag' => 'dt', 'class' => $class, 'tagClass' => $class))
));
Run Code Online (Sandbox Code Playgroud)


cnk*_*nkt 4

因为它是表单装饰器而不是元素装饰器。尝试这个:

$this->setDecorators(
array(
'FormElements',
array('HtmlTag', array('tag' => 'dl', 'class' => 'theclass')),
'Form'
));
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以这样做 $form-&gt;element-&gt;setDecorator('HtmlTag', array('tag' =&gt; 'dl', class =&gt; 'theclass')) (2认同)