Symfony multiselect下拉列表不适用于第二种表单类型

时间:2017-12-11 15:19:04

标签: javascript forms symfony dropdown multi-select

我在项目的页面上呈现两种表单类型。我这样做是因为我的用户必须在两个选项之间做出决定,如何继续,这些选项非常相似,包括相同实体的3个下拉列表。

     <div id="upload_profile_yes" >
      <div id="up_markets_container" class="col-md-4">
        {{ form_row(upForm.markets, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id="up_channel1_container" class="col-md-4">
        {{ form_row(upForm.channel1, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id = "up_prod_container" class="col-md-4">
        {{ form_row(upForm.products, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id ="up_container" class="col-md-12">
        {{ form_row(upForm.uploadprofile) }} <br>
      </div>
    </div>

    <div id="upload_profile_no">
      <div id="markets_container" class="col-md-4">
        {{ form_row(form.markets, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id="channel1_container" class="col-md-4">
        {{ form_row(form.channel1, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id = "prod_container" class="col-md-4">
        {{ form_row(form.products, { 'attr': { 'class': 'form-inline'} }) }}
      </div>
      <div id="agencies_container" class="col-md-12">
        {{ form_row(form.agencies) }}
      </div>
    </div>

    <br>
  </div>
</div>

<script src="{{ asset('js/bootstrap-datepicker.js') }}"></script>
<script src="{{ asset('js/moment.min.js') }}"></script>
<script src="{{ asset('js/bootstrap-multiselect.js') }}"></script>

{# JS functions to validate IATA/UCID/tourcode (and possibly load funds) #}
{% include 'AppBundle:Utils:validation.js.twig' %}
{% include 'DocumentBundle:Document/Utils:agency_selection.js.twig' %}
{% include 'DocumentBundle:Document/Utils:uploadprofile_selection.js.twig' %}

所以对于第一个选择(upload_profile_no)我使用javascript文件 agency_selection.js.twig (缩减为必要的代码)

 <script type="text/javascript">

makeMultiselectDropdown('#{{ form.vars.name }}_markets', 'Select Markets' );
makeMultiselectDropdown('#{{ form.vars.name }}_products', 'Select Products' );
makeMultiselectDropdown('#{{ form.vars.name }}_channel1', 'Select Channel1');

</script>

这导致所有三个下拉菜单变成了一个多选,就像我想要的那样。对于第二个选择(upload_profile_yes),我有 uploadprofile_selection.js.twig 文件

<script type="text/javascript">
alert('#{{ upForm.vars.name }}_markets');
makeMultiselectDropdown('#{{ upForm.vars.name }}_markets', 'Select Markets' );
makeMultiselectDropdown('#{{ upForm.vars.name }}_products', 'Select Products' );
makeMultiselectDropdown('#{{ upForm.vars.name }}_channel1', 'Select Channel1' );

      </script>

但是对于这种形式,它只是不呈现多选下拉列表。 表单是正确呈现的,因此下拉列表会显示正确的数据,但是用于使它们成为真实下拉列表的javascript不起作用。

javascript文件正在运行(我使用alert()函数对其进行了测试,并且正在运行..)

它的样子如下:

upload_profile_no enter image description here的下拉列表 没有为 upload_profile_yes 工作的下拉菜单 enter image description here

如您所见,这些值都是正确的。

更新

我还意识到表单类型没有完全正确呈现。 当取出form_row(upForm.markets)时,它在该页面上根本不会出现,即使它应该在页面的最底部显示为“未渲染”..

0 个答案:

没有答案