Symfony2 では、フラッシュする前に $form->bind() を使用して古いものと新しいものを比較する前に、エンティティを保存する必要があります。
私はいくつかの機能を試しました:
$command = $repository->findCommandProductsByCommand( $id );
$old_command = clone $command;
// OR $old_command = $command;
$form = $this->createForm(new EditCommandType(), $command);
if( $request->getMethod() == 'POST' )
{
$form->bind($request);
if ( $form->isValid() )
{
そして、次のようにエンティティの一部を保存しようとしました:
$old_command = $command->getCommandProducts();
しかし、これらのメソッドのいずれかで $old_command のデータにアクセスしようとすると、フォームからオブジェクトの新しい値にしかアクセスできず、古い値にはアクセスできません。
$form->bind($request) が主な問題ですが、bind() が正確に何をするかを説明しているドキュメントは見つかりませんでした。
よろしくお願いします
私の場合の解決策(zizoujabに感謝)
$command_entries = new ArrayCollection();
foreach ($command->getCommandproducts() as $entry) {
$command_entries[] = clone $entry;
}
今私の ArrayCollection $command_entries は前のエンティティにリンクしていません。