我开始创建Zend表单:
$form = new Form_ChangePersonalDetails(
array( 'person'=>$person,
'emailvalidator'=>$validator,
));
这个人是一个对象。它有效,虽然它显示警告:
Warning: htmlspecialchars() expects parameter 1 to be string, object given
是否有可能以某种方式删除此警告?
答案 0 :(得分:1)
默认情况下,传递给Zend_Form
构造函数的所有无法识别的选项都将被视为已添加到<form>
代码的其他表单属性。
如果可能,将__toString()
方法添加到Person
类,以便将其强制转换为字符串,或者根据您尝试对该对象执行的操作,可能需要覆盖{ {1}}所以它识别你已经传递了一个特殊对象,它可以在调用Zend_Form::__construct()
之前处理它,以处理传递给表单构造函数的任何其他选项。
您通过将该对象传递给表单构造函数来尝试做什么?
答案 1 :(得分:0)
您需要实现自己的构造函数! :)说
public function __construct($person, $emailValidator, $options) {
parent::__construct($options);
$this->_person = $person;
//or if you want to fill the form with the object's data
$this->populate($person->toArray());
$this->emailField->addValidator($emailValidator);
}