【发布时间】:2013-09-29 18:56:02
【问题描述】:
我正在尝试将 Doctrine 2 集成到我的 Zend 2。我希望在我的表单上加入两个实体;即ONEToOne。
我能够成功地整合教义,并能够水合其中一个实体。
当我尝试将第二个实体字段集连接到第一个实体时,会出现问题。我不断收到以下致命错误消息:
**可捕获的致命错误:参数 1 传递给 Workers\Form\Fieldset\WorkerAddressFieldset::__construct() 必须 实现接口 Doctrine\Common\Persistence\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 传递给类。但它似乎没有收到这些值。我不清楚为什么。
第二个字段集(workerAddress):
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());
}
我非常感谢其他人如何能够将字段集连接在一起的一些建议或工作示例。
【问题讨论】:
标签: forms doctrine-orm doctrine zend-framework2