2017-02-24 59 views
2

我有一個實體類型Symfony表格的問題。Symfony:Custom Twig Rendering for Entity Type

以下是我在形式類型撥打:

$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) }} 

奇怪的事情發生在我使用塊_article_categories_entry_widget然後它將它拾起,但它使標籤呈現兩次。任何想法如何處理情況?在上面這個場景中,它根本不呈現或添加ckbox類! :(

回答

0

當你命名你的自定義塊_article_categories_entry_row,我想,你的窗體名爲ArticleType

特定表單字段自定義塊應與以下模式命名爲:

_<form_name>_<field_name>_<part_name> 

可能部分爲rowerrorswidgetlabel。您使用row這裏。

entry塊名稱的一部分是不必要的。

嘗試:

{% block _article_categories_row %} 

可以在模板下面找到更多的細節Symfony Documentation

0

可以遍歷您的form.categories並根據需要渲染的複選框。

{{ form_start(form) }} 
{% for category in form.categories %} 
    {{ form_label(category) }} 
    {{ form_widget(category) }} 
{% endfor %} 
{{ form_end(form) }}