Установка идентификатора метки в Zend_Form - PullRequest
2 голосов
/ 26 марта 2009

Я пытаюсь установить идентификатор для одного из ярлыков моей формы, чтобы потом скрыть его с помощью 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 ]

1 голос
/ 07 мая 2010

Я знаю, что опоздал на вечеринку, но если вы хотите скрыть это с помощью jQuery, вы можете просто выбрать на основе атрибута for, например, так:

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

Должен сделать свое дело. В зависимости от версии jQuery, вам может потребоваться или не потребоваться символ @ перед атрибутом, например:

$('label[@for="password"]').hide();
1 голос
/ 26 марта 2009

Невозможно изменить идентификатор метки с помощью декораторов, но вы можете легко добавить имя класса

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

Я попытался установить идентификатор таким же образом, и это не работает. Если вы передаете идентификатор в качестве массива параметров, это изменит значение атрибута 'for'

...