Symfony2 - 如何在隐藏表单输入中传递实体

时间:2012-10-22 20:15:56

标签: symfony doctrine

  

可能重复:
  pass a value in a hidden field in a form

我知道要通过隐藏表单输入的实体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(...)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您无需传递隐藏的ID变量即可创建关系。

如果您需要配置默认值,则应在将实体传递给表单之前对该实体执行此操作。

$target = $em->...->find($id);

$entity = new MyEntity;
$entity->setTarget($target);

$this->createForm(new MyFormType(), $entity);

然后您的表单将不再需要担心目标,如果您选择创建它,它已经在您的新实体上设置。