我的zend_form有自定义标记,我尝试将css类( class =“hasErrors”)设置为输入字段。我呈现的表单元素如下所示:
<div id="teamname-element" class="formRow">
<input type="text" name="teamname" id="teamname" value="" placeholder="Teamname">
</div>
有错误,看起来像这样:
<div id="teamname-element" class="formRow">
<input type="text" name="teamname" id="teamname" value="" placeholder="Teamname">
<ul class="errors">
<li>Your teamname is to short!</li>
</ul>
</div>
是否可以在不使用javascript的情况下将css类设置为输入字段?
<input class="hasErrors" type="text" name="teamname" id="teamname" value="" placeholder="Teamname">
表单元素的创建方式如下:
$this->addElement(new Nut_Form_Element_Text('teamname', array(
'Label' => 'Teamname',
'validators' => array( array('StringLength', FALSE, array(1, 25)), $TeamRegex),
'filters' => array('StringTrim', 'StripTags'),
)));
答案 0 :(得分:1)
这里我们创建一个扩展Zend_Form的表单类。我们重写了isValid()方法。如果hasErrors()方法返回true,我们遍历form-&gt;元素并添加一个“error”类。我们还使用getAttrib()方法检查类属性是否已经存在,如果是,我们使用空格来附加“error”类。
class MyForm extends Zend_Form
{
public function isValid($data)
{
$valid = parent::isValid($data);
foreach ($this->getElements() as $element) {
if ($element->hasErrors()) {
$oldClass = $element->getAttrib('class');
if (!empty($oldClass)) {
$element->setAttrib('class', $oldClass . ' hasError');
} else {
$element->setAttrib('class', 'hasError');
}
}
}
return $valid;
}
}
现在,当您调用isValid方法时,它会自动向任何未通过验证的字段添加一类错误。