首页 > 解决方案 > Symfony formbuilder 格式化复选框

问题描述

这似乎应该很简单。我试图避免手动构建表单,所以我希望有一种方法可以格式化复选框的输出,使用 formbuilder。

我有一个扩展实体的值数组,用于呈现从数据库中提取的一系列复选框。目前,它将呈现输出的唯一方法是连续显示,我希望能够添加一个简单的换行符,但是没有明确的方法可以将 HTML 输入到 formbuilder 模板/

我的表格如下所示:

    $builder
        ->add('ingredients',EntityType::class, array(
            'required' => false,
            'attr' => array('class' => 'form-control'),
            'class' => Ingredient::class,
            'query_builder' => function(IngredientRepository $ir) {
                return $ir->createQueryBuilder('s')
                    ->orderBy('s.name', 'ASC');
            },
            'multiple' => true,
            'expanded' => true,
        ))

在树枝上我有这个:

{{ form_start(form) }}
{{ form_row(form.ingredients) }}<br>
{{ form_end(form) }}

这当然只是简单地返回一行中的所有字段。我希望能够遍历各个成分并应用格式,但我不确定如何做到这一点。

我试过这样的事情:

{{ form_start(form) }}
    {% for i in form_row(form.ingredients) %}
    {{ i }}<br>
     {% endfor %}
{{ form_end(form) }}

但当然它没有用。我知道我可以在树枝中手动构建表单,但同样,我想避免这样做,因为它感觉很笨重。

希望提出建议

标签: phpsymfonytwigformbuildersymfony5

解决方案


好的,所以这实际上完成了我想要的。我试图将表单字符串用作数组;我只需要直接进入数组本身。有了这个,我可以生成行,然后用 CSS 设置它们的样式。

{{ form_start(form) }}
    {% for i in form.ingredients %}
    {{ form_widget(i) }}{{ form_label(i) }}<br>
     {% endfor %}
{{ form_end(form) }}

推荐阅读