【问题标题】:Unlimited value for a select in form Symfony2Symfony2 表单中选择的无限值
【发布时间】:2013-01-16 14:59:33
【问题描述】:

我想在我的表单中进行选择,但选择的值是动态的(使用 ajax)

我的实体:

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

我的表格:

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

但是,我有:

此值无效..

因为城市不在空数组中!

【问题讨论】:

    标签: forms symfony


    【解决方案1】:

    由于城市字段是一个简单的字符串,与表格无关,简单:

    1. 将该字段呈现为简单的输入文本;
    2. 将 Javascript 附加到输入字段以通过 Ajax 自动完成城市以填充输入
    3. 那么您就可以提交了

    或:

    1. 将字段呈现为文本。
    2. 在模板中隐藏
    3. 通过 javascript 附加一个选择来代替文本输入
    4. 使用该选择来呈现城市列表
    5. 提交时从选择中获取值并将其作为输入字段的值。

    此方法还可用于设置可视小部件的值,例如星级

    【讨论】:

    • 好的!现在我明白你的问题了!
    • 我过去处理过类似的事情!避免使用选择!选择是由自动完成构建的(例如,参见 jQuery)。所以只需将库附加到一个简单的输入字段!
    • 不!您呈现一个简单的输入字段。然后将 JS 库附加到该输入字段。请参阅this jQuery 示例(查看真正适合您需求的远程 JSONP 数据源案例)
    • 我真的需要一个选择,所以在我的情况下,我必须将输入转换为使用 js 选择.. 没有其他选择吗?
    • 如果必须按照用户输入使用 AJAX 加载选项列表,如何将其呈现为选择?这是工作流程:1)用户在输入字段中输入城市名称; 2)ajax接收输入并调用获取匹配输入的城市列表; 3)js将该列表呈现为显示在输入字段下方的下拉选择; 4)用户做出选择; 5) 选择显示在文本字段中!
    【解决方案2】:

    另一种扩展表单主题的解决方案:

    以我的形式:

    $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

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 2013-12-07
      • 2015-09-30
      相关资源
      最近更新 更多