slkandy
slkandy

Reputation: 302

Setting a label's id in Zend_Form

I'm trying to set an id for one of my form's labels so I can hide it with jquery later. Here's my element:

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

In the source, it looks like this:

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

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

I need the label to look like:

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

Any ideas?

Upvotes: 2

Views: 3309

Answers (2)

Xiian
Xiian

Reputation: 101

I know I'm late to the party, but if you're looking to hide it using jQuery, you can just select based off of the for attribute like so:

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

Should do the trick. Depending on the version of jQuery you may or may not need an @ before the attribute like so:

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

Upvotes: 1

David Snabel-Caunt
David Snabel-Caunt

Reputation: 58361

It doesn't seem possible to change the label's id using decorators, but you can easily add a classname

$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);

This results in

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

I tried to set the id in the same way and this does not work. If you pass an id in as the options array, this changes the value of the 'for' attribute

Upvotes: 1

Related Questions