2016-12-23 18 views
0

私は何か間違っているか、または一貫して動作しないとわからないので、ここで簡単に質問します。次のようなシナリオは次のとおりです。Symfony2フォームの選択肢タイプ[ラジオボタン]

  • 私は何も値がされていない場合、デフォルト値は、選択するには、このカスタムフォームの種類を必要とするいくつかの定義済みの値
  • でカスタムフォームタイプ[ChoiceType「子」タイプ]でフォームを持っています私が起こることを期待する何
  • [フォームがまだ提出されていないので、そして再び、私はまた、このフォームは、ユーザーの設定に基づいて事前に入力していることが前に選択し、[環境設定]

  1. いいえユーザ選好 - フォームフィールドは、デフォルト値が[0]使用可能
  2. ユーザ選好 - フォームフィールドが$dataパラメータで渡された値を有している[0-7]
  3. は、フォームが送信されている - フォームフィールドの値であります

    • フォームフィールドは、それが元として働く['expanded' => false]選択になるように設定されている場合:実際に何が起こる提出されたもの[0-7]

  • フォームフィールドがラジオボタンリストの場合['expanded' => true]開始値と送信元の両方の値が選択されていない場合(最初の値[0]が選択されています。フォームは値を提出しません。
  • ラジオボタンの選択方法を教えてもらえますか?何も提出されない場合はempty_dataを使用して値を設定できますが、最初のフォームの表示はどうですか? empty_valueに基づいて(選択ボックスとラジオボタンの両方の)選択を行うことは完璧です。

    dataオプションも使用できません。フォームに渡されたデータ(上記のポイント2を参照)と送信されたデータを上書きするためです。私は二つのことを避けたい

    @EDIT

    :JavaScriptを使用して

    • は間違いテンプレートをオーバーライドオプション
    • ない主な理由は私も避けたいのですが、何か、です私は現在、適切なフロントエンド/テンプレートに置き換えられる基盤としてブートストラップテーマを使用しています。
    +0

    そうだね、[この](http://stackoverflow.com/a/31573320/1970395)答えが行う必要があります。 – user1970395

    答えて

    0

    私はあなたのことを理解していません 質問。 フォームのデフォルト値を管理するには、マップされたオブジェクトのプロパティを設定する必要があります。例えば

    $formObject->child->attributeDefault = "defaultValue"; 
    if($hasPreference) { 
        $formObject->child->attribute1 = "preferenceDefautlValue" 
    } 
    $form = $this->createForm(new YourFormType(), $formObject); 
    
    $form->handleRequest($request) //overide default value by submitted one 
    
    +0

    はい、そうです。しかし、フォームの初期フォームを表示すると、ユーザーの設定が公開されていなければ、このマップされたオブジェクト(実際には配列)はnullです。あなたはそこにデフォルトを含めるべきだと提案していますか?それは1つの解決策のように見えますが、可能ならばすべてをフィールド型の範囲内に保つことを望みます – user1970395

    関連する問題