0

我开始创建 Zend 表单:

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

人是一个物体。它有效,尽管它显示警告:

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

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

4

2 回答 2

1

默认情况下,传递给构造函数的任何无法识别的选项都Zend_Form将被视为添加到<form>标签的附加表单属性。

如果可能,__toString()向类添加一个方法,Person以便可以将其转换为字符串,或者根据您尝试对该对象执行的操作,您可能需要重写Zend_Form::__construct()以便它识别您已传递一个特殊对象,并且它可以在调用Zend_Form::__construct()处理传递给表单构造函数的任何其他选项之前处理它。

通过将该对象传递给表单构造函数,您特别想做什么?

于 2012-05-16T18:15:09.113 回答
0

You need to implement your own constructor! :) Say

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);
}
于 2012-05-18T21:37:32.673 回答