2

重複の可能性:
フォームの非表示フィールドに値を渡します

非表示のフォーム入力を通過させたいエンティティのIDを知っています。newActionIDを持っているか、リポジトリからオブジェクトを取得できます。

実在物:

/**
 * @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(...)

私が間違っていることは何ですか?

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 に答える