【发布时间】:2013-06-05 23:14:33
【问题描述】:
有一个实体但有两个字段集,我发现使用 use_as_base_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
)
));
....
}
实体本身包含两个字段集的属性... 绑定用户实体进行编辑时,仅填充最后添加的字段集。当然,只能有一个基本字段集... 任何有想法的人,如何解决这个问题?
【问题讨论】:
-
在对源代码进行了一些更详细的调查之后,我找到了一个解决方案,方法是覆盖zend表单的extract()方法。在我看来,这是一种解决方法。考虑到字段集的含义,如果提供了单个实体,我确实希望为表单内的所有元素提供本机填充方法。有我监督的吗?仍然对任何 cmets 感到满意
标签: object zend-framework2 bind populate fieldset