Symfony4树枝表单-自定义/覆盖单选按钮的表单小部件

时间:2018-11-24 02:39:44

标签: forms twig customization symfony4

我想将单选按钮的对齐方式从垂直更改为水平。我知道我必须在现有代码'form-check-inline'中添加<class = "form-check">才能实现。

以下是条件:

  1. 我使用 bootstrap_4_layout.html.twig 作为基本主题。
  2. 我的FormType是:

    ->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 ,但我不知道 选择哪个块或如何自定义/覆盖它:

    • {%-阻止radio_widget-%}
    • {%-阻止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>

谢谢。

0 个答案:

没有答案