此:
$promo_details = new Zend_Form_Element_Textarea('promo_details');
$promo_details->setLabel('Promo Details: ')
->setDecorators($element_decorators)
->addDecorator('Label', array('tag' => 'div'));
输出:
<div id="promo_details-label">
<label for="promo_details" class="optional">Promo Details:</label>
</div>
但我想输出:
<div id="label_row"> <-- changed the div#
<label for="promo_details" class="optional">Promo Details:</label>
</div>
如何告诉Zend不要使用它为“addDecorator('Label',array('tag'=&gt;'div'))生成的默认ID”,而是允许我指定自己的ID?我找不到任何指向正确方向的信息。
@Royal BG ----
如果我这样做:
->addDecorator('Label', array('tag' => 'div', 'class' => 'label_row'))
我明白了:
<div id="promo_details-label">
<label for="promo_details" class="label_row optional">Promo Details:</label>
</div>
将类添加到标签而不是标签周围的div标签,这是我希望它去的地方。
答案 0 :(得分:1)
无法为标签装饰器的标记设置ID(请参阅Zend_Form_Decorator_Label
render()
- ID已在其中硬编码为label id + "-label"
)。
要获得您想要的HTML,您可以:
Zend_Form_Decorator_Label
并提供setTagId()
那种 - 当然是一种矫枉过正Zend_Form_Decorator_Label
无标签选项,并手动将其Zend_Form_Decorator_HtmlTag
(需要ID)包装