2012-02-26 67 views
0

好吧,这是一个相当尴尬的问题。我使用的Symfony和后collection形式I型Symfony2没有渲染收集表格数据 - 原型

'prototype' => true, 
'allow_add' => true 

配置它,我希望它打印的原型,当我打电话的两者之一的嫩枝模板:

form_rest(form) 
form_widget(form.subform.get('prototype')) 

的问题是如果集合至少包含一个元素,则Symfony仅打印原型

这是我不知道的错误还是我错过了什么?

任何想法将不胜感激! 谢谢!

回答

2

我已经更新的Symfony到它的最新的稳定和原型仍然举止怪异:

  • 如果存在,它会使<div data-prototype="...."></div>
  • 否则会使原型纯HTML(不是没有项目为DIV的属性以上)

由于外的箱子没有办法可以解决,我被迫做IF - ELSE在我的JS。也就是说,JS首先检查data-prototype元素,如果不存在则返回其他元素。

只要我有一些空闲时间,我会研究这个问题,如果它变成是不希望的(因为我怀疑它是),将其报告为一个bug ......

0

我不知道这是否是一个错误,但我认为如果它不包含至少一个元素,那么在打印表单时没有意义。如果您正在创建集合,那么您应该创建一个虚拟元素并将其添加到您的集合中。这不是自动完成的。

+0

如果我想从头开始创建一个对象,我希望能够使用jQuery创建所有字段。我可以将虚拟对象插入到集合中,但在我看来,这有点像快速的'n'脏播放...... – 2012-02-26 11:05:53

+1

然后可能在CollectionType.php第27行设置一个断点并调试...我只是看看它,我不明白为什么一个元素是必要的。 – greg0ire 2012-02-26 11:14:14

+0

好吧,我似乎有点误会。在这两种情况下,原型都被渲染出来,我只是无法马上发现,但这两种原型在许多方面有所不同。我将继续寻找一种方法来呈现单一的,更一致的原型,这将允许我使用单个JS代码来添加新项目...... – 2012-02-26 16:30:04

0

如果表单数据是空的,你可以创建一个表单的副本并用一个虚拟对象填充它。使用这个克隆来生成原型。