我有两个实体,case和tags,具有多对多的关系。
- 案例实体 -@ORM\ManyToMany(targetEntity="Tag", inversedBy="case", cascade={"persist"})
private $tags;
@ORM\ManyToMany(targetEntity="Case", mappedBy="tags")
private $case;
当我通过复选框添加标签时,这工作正常。但我想通过收集表格来添加新标签(其中很多)。
我正在关注 symfony 食谱(http://symfony.com/doc/current/cookbook/form/form_collections.html)。
- CaseType.php -$builder
->add('title')
//...
->add('tags', 'collection', array(
'type' => new TagType(),
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
));
{{ form_start(form) }}
<ul class="tags" data-prototype="{{ form_widget(form.tags.vars.prototype.name)|e }}">
{% for tag in form.tags %}
<li>{{ form_row(tag.name) }}</li>
{% endfor %}
</ul>{{ form_end(form) }}
这是来自 new.html.twig 的 JavaScript 代码,工作:http: //jsfiddle.net/7d8vLokn/1/
问题是当 new.html.twig 被渲染时,它只在页面底部显示 Tag 标签,没有其他内容。
编辑
我注意到 new.html.twig 中有两个数据原型,一个是我创建的(上面提到过),另一个是在页面底部自动创建的......空的:
<div class="form-group">
<label class="control-label required">Tags</label>
<div id="my_bundle_bug_tags" data-prototype=""></div>
</div>