Форма ветки Symfony4 - виджет настройки / переопределения формы для переключателя - PullRequest
0 голосов
/ 24 ноября 2018

Мне нравится менять положение переключателя с вертикального на горизонтальное.Я знал, что должен добавить 'form-check-inline' в существующий код <class = "form-check">, чтобы это произошло.

Вот условия:

  1. Я использовал bootstrap_4_layout.html.twig в качестве базовой темы.
  2. Мой тип формы:

    ->add('roles', ChoiceType::class, array( 
        'choices'  => array(
        'ADMIN' => 'ROLE_ADMIN',
        'TEACHER' => 'ROLE_TEACHER',
         ),
        'expanded' =>true,
        'multiple' =>false
         ))
         ->get('roles')
    ->addModelTransformer(new CallbackTransformer(
        function ($tagsAsArray) {
        // transform the array to a string
        return implode(', ', $tagsAsArray);
        },
        function ($tagsAsString) {
        // transform the string back to an array
        return explode(', ', $tagsAsString);
        }
    ))
    
  3. Я уже изучил form_div_layout.html.twig но я не знал, какой блок выбрать или как его настроить / переопределить:

    • {% - block radio_widget -%}
    • {% - block widget_attributes -%}
    • {% атрибутов блока -%}
  4. Я могу расположить его, используя 'attr' в ветке, но он создаст новый <class> вместо переопределения:

{{ form_widget(form.roles, { 'attr': { 'class': 'form-check form-check inline'}}) }}

В результате:

<div id="task_type_transformer_roles" class="form-check form-check-inline">
    <div class="form-check">
        <input type="radio" id="task_type_transformer_roles_0" name="task_type_transformer[roles]" required="required" class="form-check-input" value="ROLE_ADMIN" />
        <label class="form-check-label required" for="task_type_transformer_roles_0">ADMIN</label>
    </div>

Заранее спасибо.

...