2

可能重复:
在表单的隐藏字段中传递值

我知道我想通过隐藏表单输入传递的实体的 ID。在newAction我有 ID,或者我可以从存储库中获取对象。

实体:

/**
 * @var object $target
 *
 * @ORM\ManyToOne(targetEntity="Acme\TestBundle\Entity\Target")
 * @ORM\JoinColumn(name="target_id", referencedColumnName="id", nullable=false)
 */
private $target;

表格类型:

->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(...)

我做错了什么?

4

1 回答 1

1

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

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

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

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

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

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

于 2012-10-22T20:23:29.413 回答