在Zend_Form中设置标签的id

时间:2009-03-26 16:56:44

标签: zend-framework zend-form zend-form-element

我正在尝试为我的某个表单的标签设置一个id,以便稍后可以使用jquery隐藏它。这是我的元素:

$password = new Zend_Form_Element_Password('password');
$password->setLabel('Password:')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty')
    ->setAttrib( "id", "password" );

在源代码中,它看起来像这样:

<dt>
<label for="password" class="required">Password:</label>
</dt>

<dd>
<input type="password" name="password" id="password" value="">
</dd>

我需要标签看起来像:

<label id="pass_label" for="password" class="required">Password:</label>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用装饰器似乎无法更改标签的ID,但您可以轻松添加类名

$decorators = array(
        array('ViewHelper'),
        array('Errors'),
        array('Description', array('tag' => 'p', 'class' => 'description')),
        array('HtmlTag', array('tag' => 'dd')),
        array('Label', array('tag' => 'dt', 'class' => 'pass_label')),
    );

    $password->setDecorators($decorators);

这导致

<label class="pass_label optional" for="password">Password</label>

我尝试以相同的方式设置id,但这不起作用。如果您将id作为options数组传递,则会更改'for'属性的值

答案 1 :(得分:1)

我知道我迟到了,但是如果你想使用jQuery隐藏它,你可以选择基于for属性,如下所示:

$('label[for="password"]').hide();

应该做的伎俩。根据jQuery的版本,您可能需要或不需要@之前的属性,如下所示:

$('label[@for="password"]').hide();