Установка идентификатора метки в Zend_Form

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

Любые идеи?


person slkandy    schedule 26.03.2009    source источник


Ответы (2)


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

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

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

person David Snabel-Caunt    schedule 26.03.2009

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

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

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

$('label[@for="password"]').hide();
person Xiian    schedule 07.05.2010