2014-02-17 3 views
0

Это:Как добавить идентификатор тега метки в Zend Framework 1.9?

$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, чтобы не использовать ID по умолчанию он генерирует для «addDecorator ('Label', array ('tag' => 'div')) ", но вместо этого разрешите мне указать свой собственный? Я не могу найти никакой информации, указывающей на меня в правильном направлении.

@Royal БГ ----

Если я:

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

Если класс добавляется к метке вместо сНа тега вокруг ярлык, где я хочу, чтобы он ушел.

+0

http://framework.zend.com/manual /1.12/en/zend.form.elements.html в соответствии с документами, в котором говорится, что вы можете указать атрибуты в массиве, пытались ли вы указать идентификатор? –

+0

Я предполагаю, что вы имеете в виду массив ('tag' => 'div', 'id' => 'label_row')? Я попробовал это и добавил идентификатор на метку, а не тег. Честно говоря, я нахожу декораторов, очень запутанных в Zend, и я уверен, что я делаю это неправильно. –

+0

Да, согласно документации вы можете указать класс '-> addDecorator ('HtmlTag', array ('tag' => 'div', 'class' => 'element'));' поэтому я предположил, что вы можете укажите ID. Как выглядит обращенный HTML, когда вы пытаетесь указать идентификатор? –

ответ

1

Невозможно установить идентификатор метки тега этикетки (см. Zend_Form_Decorator_Labelrender() - идентификатор жестко запрограммирован там как label id + "-label").

Чтобы получить HTML вы хотите, вы можете:

  1. Override Zend_Form_Decorator_Label и обеспечивают своего рода setTagId() там - конечно излишеством
  2. Используйте Zend_Form_Decorator_Label без опции тега, и оберните его Zend_Form_Decorator_HtmlTag (с требуется идентификатор) вручную
  3. декораторов Отключить элемент на все и визуализацию с пользовательским просмотром сценарием
Смежные вопросы