Symfony 4 с материалом Bootstrap Выбор сборщика не отправлен - PullRequest
1 голос
/ 17 января 2020

Настройка

  1. PHP 7.1.3
  2. Symfony 4
  3. Bootstrap 4
  4. Twig 4.3
  5. JQuery / Ajax

Все выполняется в docker контейнерах (MySQL 8 и nginx)

Для Я использую Creative Tim's Bootstrap Панель инструментов материала (https://www.creative-tim.com/product/material-dashboard-pro)

Issue

Итак, используя Symfony 4 формы и создание стандартного раскрывающегося списка выбора работает без ошибок при использовании пользовательских блоков для рендеринга:

{%- block choice_widget_collapsed -%}
    {% if attr.hidden is not defined or attr.hidden == false %}
        {%- set attr = attr|merge({class: (attr.class|default('') ~ ' selectpicker')|trim}) -%}
    {% endif %}
    {%- if required and placeholder is none and not placeholder_in_choices and not multiple and (attr.size is not defined or attr.size <= 1) -%}
        {% set required = false %}
    {%- endif -%}
    <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %} class="{% if required %}required{% endif %} bmd-label-static"
                                                                                             data-style="select-with-transition">
        {%- if placeholder is not none -%}
            <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ placeholder != '' ? (translation_domain is same as(false) ? placeholder : placeholder|trans({}, translation_domain)) }}</option>
        {%- endif -%}
        {%- if preferred_choices|length > 0 -%}
            {% set options = preferred_choices %}
            {{- block('choice_widget_options') -}}
            {%- if choices|length > 0 and separator is not none -%}
                <option disabled="disabled">{{ separator }}</option>
            {%- endif -%}
        {%- endif -%}
        {%- set options = choices -%}
        {{- block('choice_widget_options') -}}
    </select>
{%- endblock choice_widget_collapsed -%}

Всякий раз, когда я отправляю форму с выбором в базовой форме, опция выбора передается обратно контроллер (используя ajax) как часть формы.

Однако, когда форма является типом коллекции внутри формы (объекты-прототипы), как показано ниже:

$builder
    ->add('billRatesInput',
        CollectionType::class,
        [
            'entry_type' => BillRatesInputForm::class,
            'entry_options' =>
                [
                    'label' => false,
                    'disabled' => $options['isDisabled']
                ],
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
        ]

    )
;

Когда родитель форма отправлена, она принимает все значения родительской формы и все дочерние формы (BillRatesInputForm), кроме значений, связанных с полями выбора.

Если я удаляю шаблон блока и разрешаю Если это поле выбора c, отправка работает без ошибок, но с шаблоном блока отправка не работает, а только для дочерних форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...