zend2学说2形式intgergration OneToOne(zend2 doctrine 2

2019-10-29 02:13发布

我想学说2集成到我的Zend 2。 我想加入我的表格上两个实体; 即ONeToOne。

我也跟着通过gammamatrix教程 。

我是能够成功地整合教义,并能滋润的实体之一。

当我尝试加入第二个实体字段集,第一个实体将出现问题。 我不断收到以下致命错误消息:

**开捕致命错误:传递给工人\表格参数1 \字段集\ WorkerAddressFieldset :: __结构()必须实现接口主义\ COMMON \持久性\的ObjectManager,没有给出,**

我将开始与字段集,并告诉你我是怎么想的的ObjectManager传递给这两个字段集。

第一字段集:AboutYou(这是关系中的所有者);

我通过的ObjectManager通过控制器网页上的表格:

$form = new CreateAboutYouForm($this->getEntityManager());

下面的代码的第一部分单独工作。 也就是说,如果我不将workeraddressfieldset放入代码。

class AboutYouFieldset extends Fieldset implements InputFilterProviderInterface
{
    public function __construct(ObjectManager $objectManager)
    {
        parent::__construct('AboutYou');

        $this->setHydrator(new DoctrineHydrator($objectManager, 'Workers\Entity\AboutYou'))
             ->setObject(new AboutYou()); 

$this->add(array(
            'name' => 'firstName',
            'type' => 'Text',
            'options' => array(
                'label' => 'First Name',
            ),
        ));

$addressFieldset = new WorkerAddressFieldset($objectManager);
         $this->add(array(
            'type' => 'Workers\Form\Fieldset\workerAddressFieldset',
            'name' => 'WorkerAddress',
            'options' => array(
                'label' =>  $addressFieldset
            )
        ));

}

你会发现上面我创建了一个workerAddressFieldset对象 ,并试图将的ObjectManager传递到类的方式。 但它似乎并没有收到值。 我不明白这是为什么。

第二字段集(所述workersAddress):

class WorkerAddressFieldset extends Fieldset implements InputFilterProviderInterface
{
    public function __construct(ObjectManager $objectManager)
    {
        parent::__construct('WorkerAddress');

        $this->setHydrator(new DoctrineHydrator($objectManager, 'Workers\Entity\WorkerAddress'))
             ->setObject(new WorkerAddress());

}

我真的很感激一些建议或他人如何能够加入字段集一起工作示例。

Answer 1:

那是因为你尝试从字符串添加字段集。 鉴于您的AddressFieldset有一个__construct(ObjectManager $om)但是你首先需要实例字段集,然后将其添加到您的形式。 喜欢:

class AboutYouFieldset extends Fieldset 
{
    public function __construct(ObjectManager $objectManager)
    {
        parent::__construct('about-you');

        $this->add(); // your first element

        $fieldset = new WorkerAddressFieldset($objectManager);
        $this->add($fieldset);
    }
}


文章来源: zend2 doctrine 2 form intgergration OneToOne