我在 Symfony表单中呈现实体类型时遇到问题。
以下是我在类型:
形式中所说的内容$builder
->add('categories', EntityType::class, array
(
'class' => 'AppBundle\Entity\ArticleCategory',
'choice_label' => 'name',
'expanded' => true,
'multiple' => true,
'constraints' => array
(
new NotBlank(array('message' => 'Select Category'))
)
))
这是我想要做的模板:
{% form_theme form _self %}
{% block _article_categories_entry_row %}
<div class="ckbox ckbox-default">
{{ form_widget(form) }}
{{ form_label(form) }}
{{ form_errors(form) }}
</div>
{% endblock %}
在我正在做的同一模板中
{{ form_start(form) }}
{{ form_row(form.categories) }}
{{ form_end(form) }}
当我使用 block _article_categories_entry_widget 时会发生奇怪的事情并且它会将其选中,但它会将标签呈现两次。任何想法如何处理情况?在上面的场景中,它根本不渲染或添加ckbox类! :(
答案 0 :(得分:1)
在您命名自定义块_article_categories_entry_row
时,我认为您的表单名为ArticleType
。
特定表单字段的自定义块应使用以下模式命名:
_<form_name>_<field_name>_<part_name>
可能的部分为row
,errors
,widget
,label
。你在这里使用row
。
但是块名称的entry
部分是不必要的。
尝试:
{% block _article_categories_row %}
中找到更多详情
答案 1 :(得分:1)
您可以循环浏览模板中的form.categories
,如下所示,然后根据需要渲染复选框。
{{ form_start(form) }}
{% for category in form.categories %}
{{ form_label(category) }}
{{ form_widget(category) }}
{% endfor %}
{{ form_end(form) }}