我正在尝试将原则2集成到我的Zend 2中。我希望在我的表格上加入两个实体,即ONeToOne。
我跟踪了gammamatrix教程。
我能够成功地整合理论,并能够对其中一个实体进行水毁。
当我试图将第二个实体字段集连接到第一个实体时,就会出现这个问题。我一直收到以下致命错误消息:
**可捕获的致命错误:传递给Workers\Form\Fieldset\WorkerAddressFieldset::__construct()的参数1必须实现接口原则\公用\持久性\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());
}我非常感谢一些建议或一个工作样本,说明其他人是如何将这些领域集合在一起的。
发布于 2013-09-30 07:41:32
这是因为您试图从字符串中添加Fieldset。但是,考虑到您的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);
}
}https://stackoverflow.com/questions/19081982
复制相似问题