Symfony 表单渲染器 - 自定义引导复选框和单选按钮

mic*_*ndr 2 symfony twig bootstrap-4

我发现你可以告诉 symfony 以引导方式生成表单,通过在你的 twig.yaml 文件中添加它

twig:
   form_themes: ['bootstrap_4_layout.html.twig']
Run Code Online (Sandbox Code Playgroud)

这会以正常的引导程序方式呈现复选框,如下所示:

<fieldset class="form-group">
   <legend class="col-form-label required">Subjects</legend>
   <div id="form_subjects">
      <div class="form-check">
         <input type="checkbox" id="form_subjects_0" name="form[subjects][]" class="form-check-input" value="1">
         <label class="form-check-label" for="form_subjects_0">4IZ110</label>
      </div>
      <div class="form-check">
         <input type="checkbox" id="form_subjects_1" name="form[subjects][]" class="form-check-input" value="2">
         <label class="form-check-label" for="form_subjects_1">4MA106</label>
      </div>
   </div>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

这太棒了,但我想以这种方式将它生成为自定义表单(我正在使用 bootswatch 模板):

<div class="form-group">
   <div class="custom-control custom-checkbox">
       <input type="checkbox" class="custom-control-input" id="customCheck1" checked="">
       <label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在 symfony 文档中发现您可以“按自定义生成表单”,但这只是基于添加class="checkbox-custom"到元素<div id="form_subjects">

所以我的问题是:有没有办法在本地生成自定义引导复选框(和单选按钮)?还是我必须重写bootstrap_4_layout.html.twig

mic*_*ndr 7

好的,当我仔细查看 时bootstrap_4_layout.html.twig,我找到了解决方案:只需'label_attr' => ['class' => 'checkbox-custom']在创建表单时添加到选项。

现在我的表单看起来像这样,并且可以正常工作:

$form = $this->createFormBuilder()
    ->add(
        'subjects',
        ChoiceType::class,
        [
           'choices' => $this->subjectFacade->getAll(),
           'choice_label' => 'indent',
           'choice_value' => 'id',
           'expanded' => true,
           'multiple' => true,
           'label_attr' => ['class' => 'checkbox-custom'],
         ]
      )
      ->getForm();
Run Code Online (Sandbox Code Playgroud)