在ZF2中,我有一个如下所示的字段集:
class PhoneRegistrationFieldset extends Fieldset implements InputFilterProviderInterface
{
public function __construct()
{
parent::__construct('phoneRegistration');
$this
->setHydrator(new ClassMethods(false))
->setObject(new Phone());
$this->add([
'type' => 'Zend\Form\Element\Select',
'name' => 'phoneType',
'options' => [
'value_options' => // array of values
],
]);
$this->add([
'name' => 'areaCode',
'options' => [
'label' => 'label'
],
]);
// other fields
}
}
表格:
class PhoneRegistrationForm extends Form
{
public function __construct()
{
parent::__construct();
$this
->setAttribute('method', 'post')
->setHydrator(new ClassMethods(false))
->setInputFilter(new InputFilter());
$this->add([
'type' => 'Parties\Form\Fieldsets\PhoneRegistrationFieldset',
]);
$this->add([
'type' => 'Zend\Form\Element\Button',
'name' => 'submitPhoneButton',
'attributes' => [
'type' => 'submit',
]);
}
}
我在控制器中验证表单。它得到验证,但Phone
对象在验证期间没有得到补充。如果我在验证后dump
对象,则其所有属性都为NULL
s。
我怎样才能水合附着在田野中的物体?
答案 0 :(得分:0)
编辑:我的解决方案在ZF3中不起作用。
无意中找到了解决方案:我需要在控制器中的表单上调用bind()
方法,如:
$this->phoneRegistrationForm->bind(new Phone());
这很有意思,但你可以将任何对象扔进bind()
方法,你仍然可以使字段集的对象保持水分。
在检查附加到其他场集的对象的水合作用后,如果调用表单上的bind()
方法,它们都会被水化。希望这对像我这样或多或少对ZF2新手的人有所帮助。