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

由于 city 字段是一个简单的字符串,并且与表无关,因此只需:

  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 回答