Как добавить определенный класс для ввода, который вызвал ошибку формы? - PullRequest
2 голосов
/ 24 марта 2010

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

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

<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 error "

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

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

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

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

$('ul.errors').prev().addClass("FieldError");
0 голосов
/ 01 октября 2013

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

$this->addElement('text', 'email', array(
    'label'      => 'Your email address:',
    'required'   => true,
    'filters'    => array('StringTrim'),
    'validators' => array(
        'EmailAddress',
    ),
    'class' => 'input-large'
));
0 голосов
/ 25 марта 2010

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

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

...