1

フォームに選択が必要ですが、選択の値は動的です (ajax を使用)

私のエンティティ:

 /**
 * @ORM\Column(type="string", nullable=true )
 * @Assert\NotBlank()
 */
private $city;

私のフォーム:

$builder->add('city', 'choice',array('empty_value' => 'choice city', 'choices' => array() ));

しかし、私は持っています:

この値は無効です..

都市が空の配列にないからです!

4

2 に答える 2

1

都市フィールドは単純な文字列であり、テーブルに関連付けられていないため、単純に次のようにします。

  1. フィールドを単純な入力テキストとしてレンダリングします。
  2. Ajax を介して都市の自動補完用の Javascript を入力フィールドにアタッチして、入力を埋めます
  3. 次に、送信する準備ができました

また:

  1. フィールドをテキストとしてレンダリングします。
  2. テンプレで隠す
  3. テキスト入力の代わりに、javascript を介して選択をアタッチします。
  4. その選択を使用して、都市のリストをレンダリングします
  5. 送信時に、選択から値を取得し、入力フィールドの値として配置します。

このアプローチは、星評価などのビジュアル ウィジェットの値を設定するためにも使用できます。

于 2013-01-16T15:04:17.467 に答える
0

拡張フォームテーマを使用した他のソリューション:

私のフォームでは:

$builder->add('city', 'text',array('data' => 'choice city'));

そして私の小枝のテンプレートで

{% form_theme form _self %}
{% block _template_defaultbundle_membertype_city_widget %} 
   <select {{ block('widget_attributes') }} ><option>{{ value }}</option></select> 
{% endblock %}

「template_defaultbundle_membertype_city」は入力のIDです

于 2013-01-16T16:52:36.580 に答える