开发者

Adding the id attribute to a Zend_Form_Decorator_Label

I would like to add the id attribute to a label field in a Zend Form Element, but when setting 'id'=>'namelabel' in the decorator properties, it sets for='namelabel' in the label instead of adding the attribute of id='namelabel'

$name = new Zend_Form_Element_Text('name');
$name->setLabel('Business Name:');
$name->addDecorator('Label',array('class'=>'form_label', 'id'=>'namelabel'));
$name->addDecorator('HtmlTag',array('tag'=>'span','class'=>'form_inputs'));
$name->setOrder(1);
$name->size='40';

renders

开发者_运维技巧
<label for="namelabel" class="form_label optional">Business Name:</label>

when I want it to render

<label id="namelabel" for="name" class="form_label optional">Business Name:</label>

Is this even possible?


What ZF is doing is correct, because the for in your label should be the same as the id in your input. So you should not change this to be something different.

Have you tried:

$name->addDecorator('Label',array('class'=>'form_label', 'id'=>'name'));

More importantly, why do you need to do this?

Edit after OP response

The for should be unique enough for this, you can change your ZF code to the below, as you do not need to set an id

$name = new Zend_Form_Element_Text('zf_element_name');
$name->setLabel('Business Name:');
$name->addDecorator('Label',array('class'=>'form_label'));
$name->addDecorator('HtmlTag',array('tag'=>'span','class'=>'form_inputs'));
$name->setOrder(1);
$name->size='40';

Then your javascript, if your using jQuery you can do this

$("label[for='zf_element_name']").html("Some new Label text");
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜