2011-07-20 8 views
1

私は問題があり、その原因を探す場所が本当に分かりません。私はオブジェクトに基づいて作成されたpropelフォームを持っています。オブジェクトは空ではありません。symfonyでpropelフォームを保存しています:不正なオブジェクト

$form = ModelNameForm($modelObject); 

は、私がリクエストデータと結合します:

$form->bind(
    $request->getParameter($form->getName()), 
    $request->getFiles($form->getName()) 
); 

検証:

$form->isValid(); 

、最後に保存します。

$result = $form->save(); 

事は縛られた後のことです$form->getObject()は、$request->getParameter($form->getName())に正しい値が含まれていますが、初期オブジェクトを返します。さらに興味深いのは、$form->save()の後に$form->getObject()が正しい値を得ているということです。その原因はコード内にある可能性がありますが、私はそれを探す場所を知りません。どのような状況では、フォームオブジェクトはバインド後に古いデータを含むことがありますが、保存した後にvar_dumpを実行すると新しいものを表示しますか? (私は数週間のためにsymfonyを使う)が、私は同じ問題を抱えていたし、私はそのようにそれを固定する理由

答えて

3

これはsfFormの正常な動作です。汚染された値をフォームにバインドすると、フォームを保存するまで、含まれているオブジェクトはそれらの新しい値について何も知りません。 Bindingではフォームを検証することができます。検証が成功すると、$ form-> save()を呼び出すことによって、新しい値をオブジェクトに渡します。 symfony 1.4フォームガイドを読むことをお勧めします:http://www.symfony-project.org/forms/1_4/en/

1

私が説明することはできません。

$result = $form->save(); 
$result->save(); 
+0

私はこのアプローチを試みましたが運がない – AndreyM

関連する問題