有一个实体但有两个fieldsets,我发现在使用use_as_base_fieldset选项时只填充了一个fieldset。
这个问题有解决方案吗?
第一个字段集
class ProfileFieldset extends AbstractFieldset implements InputFilterProviderInterface
{
public function __construct($em)
{
....
$this->setHydrator(new Hydrator(false))
->setObject(new User());
...
}
...
}
第二场集
<?php
use \Zend\InputFilter\InputFilterProviderInterface;
use Zend\Stdlib\Hydrator\ClassMethods as Hydrator;
use User\Entity\User;
class CredentialsFieldset extends AbstractFieldset
implements InputFilterProviderInterface
{
public function __construct($em)
{
.....
$this->setHydrator(new Hydrator(false))
->setObject(new User());
....
}
...
}
表格
use Zend\Stdlib\Hydrator\ClassMethods as Hydrator;
use User\Entity\User;
class UserForm extends AbstractForm
{
public function __construct()
{
....
$this->setHydrator(new Hydrator(false))
->setObject(new User());
....
$this->add(array(
'type' => 'User\Form\Fieldset\ProfileFieldset',
'options' => array(
'use_as_base_fieldset' => true
)
));
$this->add(array(
'type' => 'User\Form\Fieldset\CredentialsFieldset',
'options' => array(
'use_as_base_fieldset' => true
)
));
....
}
实体本身包含两个字段集的属性...... 绑定用户实体进行编辑时,只填充最后添加的字段集。当然,只有一个基本字段集...... 任何有想法的人,如何解决这个问题?
答案 0 :(得分:-1)
我认为这可以通过创建一个由两个字段集组成的新字段集来完成。
class UserForm extends AbstractForm
{
public function __construct()
{
$this->add(array(
'type' => 'User\Form\Fieldset\UserFieldset',
'options' => array(
'use_as_base_fieldset' => true
)
));
....
}
然后UserFieldset将成为
<?php
namespace User\Form\Fieldset;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;
use Zend\Stdlib\Hydrator\ClassMethods as ClassMethodsHydrator;
class UserFieldset extends Fieldset {
public function __construct()
{
parent::__construct('user');
....
$this->add(array(
'type' => 'User\Form\Fieldset\ProfileFieldset',
));
$this->add(array(
'type' => 'User\Form\Fieldset\CredentialsFieldset',
));
.....
}
public function init()
{
$this->setHydrator(new ClassMethodsHydrator(false))
->setObject(new User());
....
}
....
}