【发布时间】:2015-06-30 22:19:52
【问题描述】:
我在尝试使用 ZF2.5 和 Doctrine2 对表单中的对象进行水合时遇到问题。
我有一个创建表单,其中包含为对象类型 A 配置的基本字段集。它配置了 ClassMethods 水合器,并使用“new A()”对象进行了初始化。就其本身而言,此表单按预期工作 - 从控制器,在验证后,我可以调用 $form->getData() 来接收 A 类型的对象,然后我将其保存到数据库中。
A 类与 B 类有 manyToOne 关系。我尝试将这种关系添加到上面提到的字段集中,如下所示:
$this->add([
'name' => 'class_A_field_name_for_class_B',
'type' => 'DoctrineModule\Form\Element\ObjectSelect',
'options' => array(
'object_manager' => $this->entity_manager,
'target_class' => '\my\ClassB',
'property' => 'name',
'is_method' => true,
'label' => 'Class B Selection'
),
'attributes' => [
'class' => 'form-control',
'required' => true
]
]);
不幸的是,我收到类似于以下的错误:
参数 1 传递给 my\ClassA::setClassB() 必须是 my\ClassB 的一个实例, 给定的字符串,调用 /vagrant/vendor/zendframework/zend-stdlib/src/Hydrator/ClassMethods.php 在第 220 行并定义
我无法弄清楚我做错了什么。有接盘侠吗?我尝试将“属性”字段更改为“id”,但所做的只是尝试调用 setClassB(3)(而不是水合 id 3 的 ClassB 实例并将其传递给 setClassB)。
非常感谢。
【问题讨论】:
标签: zend-framework doctrine-orm zend-framework2 doctrine