首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zend2原则2构成一体化OneToOne

zend2原则2构成一体化OneToOne
EN

Stack Overflow用户
提问于 2013-09-29 18:56:02
回答 1查看 730关注 0票数 0

我正在尝试将原则2集成到我的Zend 2中。我希望在我的表格上加入两个实体,即ONeToOne。

我跟踪了gammamatrix教程

我能够成功地整合理论,并能够对其中一个实体进行水毁。

当我试图将第二个实体字段集连接到第一个实体时,就会出现这个问题。我一直收到以下致命错误消息:

**可捕获的致命错误:传递给Workers\Form\Fieldset\WorkerAddressFieldset::__construct()的参数1必须实现接口原则\公用\持久性\ObjectManager,没有给出**

我将从字段集开始,并向您展示如何将ObjectManager传递给这两个字段集。

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

我通过控制器页面上的表单传递ObjectManager:

代码语言:javascript
复制
$form = new CreateAboutYouForm($this->getEntityManager());

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

代码语言:javascript
复制
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):

代码语言:javascript
复制
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());

}

我非常感谢一些建议或一个工作样本,说明其他人是如何将这些领域集合在一起的。

EN

回答 1

Stack Overflow用户

发布于 2013-09-30 07:41:32

这是因为您试图从字符串中添加Fieldset。但是,考虑到您的AddressFieldset有一个__construct(ObjectManager $om),您首先需要实例化字段集,然后将其添加到表单中。比如:

代码语言:javascript
复制
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);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19081982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档