symfony2 formbuilder选择多个抛出没有数组

时间:2016-09-26 09:56:52

标签: php arrays symfony twig formbuilder

问题:多个下拉列表只是移交字符串而不是数组。

我尝试在formbuilder中使用多个下拉列表:

->add('options', 'choice', array(
                    'choices' => $printerOptionsDropdown,
                    'empty_value' => 'Optionen wählen',
                    'label' => 'Optionen',
                    'attr' => array(
                        'class' => 'form-control selectpicker',
                        'data-live-search' => true,
                        'multiple' => true),
                    'required' => false
                ))

使用此树枝模板:

<form action="{{ path('<form>_create', { 'id' : entity.id }) }}" name="<formForm>" id="<formForm>" method="POST" class="form-horizontal" role="form" >
        <div class="form-group">
            <label for="<formbuildertag>_options" class="col-sm-2 control-label">{{ form_label(form.options) }}</label>
            <div class="col-sm-4">
                {{ form_widget(form.options) }}{{ form_errors(form.options) }}
            </div>
        </div>

一切都很好。我可以选择多个选项。 但是当我提交表单时,它只会移交一个不是数组的字符串。

<formbuildertag>[options]:"Value1"
<formbuildertag>[options]:"Value2"

post请求的输出只是Value2的字符串。它被覆盖,因为它不是一个数组。我明白了。但是为什么formbuilder甚至没有为表单创建一个数组。

我已经尝试覆盖full_name

form_widget(form.options, `enter code here`'full_name' => '<formbuldertag>[options][]')

但它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须将multiple选项定义为true。你在attr中拥有它。改变如下:

->add('options', 'choice', array(
    'choices' => $printerOptionsDropdown,
    'empty_value' => 'Optionen wählen',
    'label' => 'Optionen',
    'attr' => array(
        'class' => 'form-control selectpicker',
        'data-live-search' => true,
    'required' => false,
    'multiple' => true
))

希望这有帮助!