我知道要通过隐藏表单输入的实体ID。在newAction
我有ID,或者我可以从存储库中获取对象。
实体:
/**
* @var object $target
*
* @ORM\ManyToOne(targetEntity="Acme\TestBundle\Entity\Target")
* @ORM\JoinColumn(name="target_id", referencedColumnName="id", nullable=false)
*/
private $target;
FormType:
->add('target', 'hidden', array('property_path' => 'target.id'))
在newAction
我做:
$target = $em->...->find($id);
$entity->setTarget($target);
但是当我坚持不懈时,我会收到错误:
Warning: spl_object_hash() expects parameter 1 to be object, string given(...)
我做错了什么?
答案 0 :(得分:1)
您无需传递隐藏的ID变量即可创建关系。
如果您需要配置默认值,则应在将实体传递给表单之前对该实体执行此操作。
$target = $em->...->find($id);
$entity = new MyEntity;
$entity->setTarget($target);
$this->createForm(new MyFormType(), $entity);
然后您的表单将不再需要担心目标,如果您选择创建它,它已经在您的新实体上设置。