Symfony2嵌套集合和原型

时间:2015-06-24 08:29:04

标签: php symfony

我在Symfony2中有3个嵌套表单。我不会在这里进入所有代码,因为它可能很长。我要举例说明我想在这里做些什么。

所以,让我们说Category有一个Product而产品有一个Tag。 其中每一个都是可重复使用的AbstractType

这将是 CategoryType 的代码(我将省略allow_addallow_deleteby_reference以提高可读性。

$builder->add('product', 'collection', array(
    'type' => new ProductType(),
    'prototype' => true,
    'prototype_name' => '__product__'
));

这将是 ProductType

$builder->add('tag', 'collection', array(
    'type' => TagType(),
    'prototype' => true, 
    'prototype_name' => '__tag_name__'
));

TagType 在这里并不重要。我想要的是在Twig中以两个divs像这样渲染这些集合的原型......

<div class="ResourceAttributePrototype" data-product-prototype="{{ form_widget(form.product.vars.prototype)|e  }}"></div>

<div class="Prototype" data-tag-prototype="{{ form_widget(form.product.vars.prototype.children['tag'].vars.prototype)|e }}"></div>

问题是第一个原型是数据属性中的渲染,但第二个是空字符串。为什么呢?

此外,如果有人对如何渲染嵌套表单集合有更好的了解,我会全神贯注。我找到了我跟随的a good example,但它不起作用。

2 个答案:

答案 0 :(得分:2)

如果您只是首先渲染孩子,这个问题就会消失。

我的一个项目示例:

首先渲染这些原型:

  

campaignForm.campaignRows.vars.prototype.children [&#39; campaignTexts&#39]。vars.prototype       campaignForm.campaignRows.vars.prototype.children [&#39; featuredItems&#39]。vars.prototype       campaignForm.campaignRows.vars.prototype.children [&#39; campaignImageCampaigns&#39]。vars.prototype

然后父母:

  

campaignForm.campaignRows.vars.prototype

适合我,希望它也适合你。我假设孩子们被设置为内部渲染,导致你遇到的问题。

答案 1 :(得分:0)

好的,我想通了。

这是我坚持的一个项目。它有自己的形式主题,并且主题化使嵌套的表单集合在另一个内部呈现。

因此,如果有人看到这个,请检查您的表单主题,如果您自定义。

上面的答案都有效。