将id属性添加到Zend_Form_Decorator_Label

时间:2010-09-15 23:24:36

标签: php zend-framework zend-form

我想将id属性添加到Zend Form Element中的标签字段,但是当在decorator属性中设置'id'=>'namelabel'时,它会在标签中设置='namelabel'而不是添加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';

呈现

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

我希望它渲染

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

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

ZF正在做的是正确的,因为标签中的for应与id中的input相同。所以你不应该把它改成不同的东西。

你试过了吗?

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

更重要的是,你为什么需要这样做?

OP响应后编辑

for应该足够独特,您可以将ZF代码更改为以下内容,因为您不需要设置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';

然后你的javascript,如果你使用jQuery就可以做到这一点

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