我是 zend 世界的新手。我有一个通过扩展创建的表单BaseApp_Form
。显然,验证也被强加于这些领域。但是在提交表单后,如果它触发验证错误,以及我收到的验证错误消息Warning: htmlspecialchars() expects parameter 1 to be string, array given in \library\Zend\View\Abstract.php on line 905
。我知道这是escape($var)
功能的问题library/zend/view/abstract.php
。$var 的值有时不为空,有时什么也没有。这就是为什么htmlspecialchars()
没有正确执行。但是现在如何解决这个问题。
更新
public function init()
{
$validators=array(
new Zend_Validate_Db_NoRecordExists(array(
'table' => 'table_name',
'field' => 'name'
)),new Zend_Validate_Alnum(array('allowWhiteSpace'=>true)),new Zend_Validate_Regex(array('pattern' => '/^[a-z]/i')));
$this->setMethod('post');
$this->addElement('text','name',array(
'label'=>'Name',
'required'=>true,
'filters'=>array('StringTrim')
));
$this->getElement('name')->addValidators($validators);
$this->addElement('textarea','textarea1',array(
'label'=>'textarea11',
'required'=>true,
'filters'=>array('StringTrim'),
'rows' => 5,
'cols' => 50
));
$this->addElement('textarea','textarea2',array(
'label'=>'textarea22',
'required'=>true,
'filters'=>array('StringTrim'),
'rows' => 5,
'cols' => 50
));
$this->addElement('textarea','textarea3',array(
'label'=>'textarea33',
'required'=>true,
'filters'=>array('StringTrim'),
'rows' => 5,
'cols' => 50
));
$this->addElement('checkbox','isApproved',array(
'label'=>'Is Approved',
'required' =>false
));
$this->addElement('submit','saveCategory',array(
'ignore'=>true,
'label'=>'Save Category'
));
}
这是在一个正在扩展的类中,Zend_Form
在视图页面中我称之为这个表单。