Как добавить определенный класс к входу, который вызвал ошибку формы?

Я хочу добавить определенный класс к вводу, если ввод генерирует ошибку.

Например, если ввод пуст и для него требуется валидатор, он должен выглядеть так:

<dd id="login-element">
    <input type="text" name="login" id="login" value="" class="input-text error" />
    <ul class="errors">
        <li>Value is required and can't be empty</li>
    </ul>
</dd>

class="input-text ошибка"

Пожалуйста, скажите мне, как это сделать.


person Kamil Mroczek    schedule 24.03.2010    source источник


Ответы (3)


Посмотрите это руководство, чтобы лучше понять, где изменить код: http://devzone.zend.com/article/3450-Decorators-with-Zend_Form

В вашем случае я бы рекомендовал либо заменить декоратор ViewHelper декоратором, который создает желаемый результат. Вы можете расширить класс Zend_Form_Decorator_ViewHelper для этого своим собственным кодом и перезаписать метод getElementAttribs(), чтобы вставить атрибут вашего класса.

person chiborg    schedule 25.03.2010

Я решил это с помощью jquery! :)

Я использовал стандартные декораторы и манипулировал классом объекта предварительного просмотра в DOM.

$('ul.errors').prev().addClass("FieldError");
person xaloy    schedule 26.04.2011
comment
Не в обиду плакату, и я приветствую ваше творчество, но, чувак. Zend framework ОТСУТСТВУЕТ, если это то, к чему вам приходится прибегать. - person bobber205; 01.08.2012

Вместо того, чтобы создавать декоратор, простой способ сделать это - установить класс, пока вы добавляете элемент в класс form. Например, вы можете использовать следующее в методе init() вашего класса Zend_Form

$this->addElement('text', 'email', array(
    'label'      => 'Your email address:',
    'required'   => true,
    'filters'    => array('StringTrim'),
    'validators' => array(
        'EmailAddress',
    ),
    'class' => 'input-large'
));
person Nayan    schedule 01.10.2013