1

Symfony 2 を使用して、ログインしているユーザーが詳細を更新できるページを作成しました。これを行うには、profileAction の下のコントローラーで、セッションからユーザー ID を取得して dotorine を使用してユーザーを取得します。

 $user = $this->getUser();
 $entity = $em->getRepository('GibboCodeKeeperBundle:User')->find($user->getId());

次に、$entity オブジェクトをフォームにバインドしますが、フォームが送信されると、バインドされた $entity オブジェクトで現在更新されているものはすべて、セッションの $user オブジェクトでも変更されます。$user オブジェクトを更新すると、$entity も更新されます:S.

$entity がフォーム内から戻ってきたものを表し、 $user が永続化を試みる前に現在データベースにあるものを表すようにしたいので、ユーザーが更新したものを見ることができます。

4

1 に答える 1

1

これを試すことができます:

$user = $this->getUser();
$entity = $em->getRepository('GibboCodeKeeperBundle:User')->find($user->getId());

$form = $this->createForm($formType, $entity);
$form->bind($request);

if ($form->isValid()) {
    // here is your updated user
    $entity = $form->getData();

    // this will not update uses session
    $em->refresh($user);
}

または、エンティティを複製できます

$oldEntity = clone $entity;
于 2013-01-19T14:53:11.020 に答える