如何在Zend Framework 1.9中为标签标签添加ID?

时间:2014-02-17 20:54:55

标签: php zend-framework

此:

$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标签,这是我希望它去的地方。

1 个答案:

答案 0 :(得分:1)

无法为标签装饰器的标记设置ID(请参阅Zend_Form_Decorator_Label render() - ID已在其中硬编码为label id + "-label")。

要获得您想要的HTML,您可以:

  1. 覆盖Zend_Form_Decorator_Label并提供setTagId()那种 - 当然是一种矫枉过正
  2. 使用Zend_Form_Decorator_Label无标签选项,并手动将其Zend_Form_Decorator_HtmlTag(需要ID)包装
  3. 完全禁用元素的装饰器并使用自定义视图脚本进行渲染