2009-03-26 6 views
2

J'essaie de définir un identifiant pour l'une des étiquettes de mon formulaire afin que je puisse le cacher avec jquery plus tard. Voici mon élément:Définition de l'identifiant d'un label dans Zend_Form

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

Dans la source, il ressemble à ceci:

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

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

J'ai besoin l'étiquette pour ressembler à:

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

Toutes les idées?

Répondre

1

Il ne semble pas possible de changer à l'aide des décorateurs, mais l'id l'étiquette vous pouvez facilement ajouter un nom de classe

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

Il en résulte

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

J'ai essayé de définir l'identifiant dans la de la même manière et cela ne fonctionne pas. Si vous passez un identifiant dans le tableau des options, cela change la valeur de l'attribut 'pour'

1

Je sais que je suis en retard à la fête, mais si vous cherchez à le cacher en utilisant jQuery, vous pouvez juste sélectionnez basé sur l'attribut pour comme:

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

Doit faire l'affaire. Selon la version de jQuery, vous pouvez ou non avoir besoin d'un @ avant l'attribut comme ceci:

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