symfony2:将主题应用于集合类型的单个字段

lux*_*ury 4 symfony-forms symfony

将主题应用于表单字段很容易,例如:

{% form_theme form _self %}

{% block _product_name_widget %}
    {{ block('field_widget') }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但是如果表单字段是集合类型怎么办?例如: product['models'][1][comment我不知道如何定制它.(这可能是第一个问题)

更新: anwser here:Symfony2:带有data-prototype的集合表单字段类型

Tro*_*ike 5

从Symfony 2.1(它可能也适用于2.0但不确定)应用主题进行收集,您可以这样做:

假设我们有一系列产品(我们有多个产品实体)

控制器:

    $repository = $this->getDoctrine()->getRepository('ExampleBundle:Product');
    $products = $repository->findAll();

    $productCollection = new Products;

    foreach ($products as $product) {
        $productCollection->getProducts()->add($product);
    }

    $collection = $this->createForm(new ProductsType, $productCollection);

    return $this->render('ExampleBundle:Default:index.html.twig', array(
        'collection' => $collection->createView()
            ));        
Run Code Online (Sandbox Code Playgroud)

您的主题可能如下所示:

{% block _productsType_products_entry_name_row %}
    <div class="yourDivName">{{ block('form_widget') }}</div>
{% endblock %}
{% block _productsType_products_entry_description_row %}
    <div class="yourDivDescription">{{ block('form_widget') }}</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

诀窍在于"条目",其中twig将完成工作,以便将上述更改应用于每一行以及您指定的每个字段

希望有所帮助!