将对象附加到Zend表单

时间:2012-05-16 17:21:39

标签: zend-framework zend-form-element

我开始创建Zend表单:

$form = new Form_ChangePersonalDetails(
                     array( 'person'=>$person,
                            'emailvalidator'=>$validator,
                              ));

这个人是一个对象。它有效,虽然它显示警告:

Warning: htmlspecialchars() expects parameter 1 to be string, object given 

是否有可能以某种方式删除此警告?

2 个答案:

答案 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);
}