我已经尝试过Symfony表格一段时间了。毫无疑问,Symfony的FormType是一个很棒的功能,可以帮助创建健壮的表单,特别是与相关实体(例如ManyToMany,OneToMany等)。在持久性方面,FormType使我的工作变得简单复杂。其中一个案例是嵌入式表单,其中有多个(简称Category
和Tag
)实体与ManyToMany关系。使用FormType,我可以创建一个'选择下拉列表'使用ChoiceType表单字段选择类别的字段,嵌入另一个带有多个'文本输入的CollectionType字段'字段接受多个tagname
,最后一个提交按钮。我只需要在cascade = {persist}
实体和Wallah的categoryname
属性上使用注释添加Category
选项!
现在如果我想创建一个可以接受多个标签的单个输入字段,而不是拥有多个输入字段。像这样:
为此,我可以使用CollectionType表单字段创建<input>
元素,然后在我的html.twig中,我可以将javascript(jquery / AngularJS)依赖项作为属性插入。
这可以通过使用jquery Chosen或Select2 https://www.sitepoint.com/jquery-select-box-components-chosen-vs-select2/
来完成或使用AngularJS ngTagsInput组件http://mbenford.github.io/ngTagsInput/
不仅仅是这个特例,我知道jquery提供了你想在客户端做的几乎所有事情,并且与Symfony一起工作很好,但是我已经考虑过AngularJS一段时间了毫无疑问,它比jquery或任何其他javascript框架领先一步。因此,我的观点偏向于AngularJS。
问题是,jquery(Chosen / Select2)使用<select>
元素,AngularJS(ngTagsInput)使用自定义<tags-input>
元素来显示此字段。虽然使用AngularJS我可以进行一些基本更改并将<tags-input>
元素转换为<div ngTagsInput>
,但我无法将其转换为 <input ngTagsInput>
,因为标准HTML <input>
元素没有结束标记,因此auto-complete
等许多功能都无法使用。 Customizing ngTagsInput & autoComplete directives (AngularJS)
问题:为了让Symfony以标准方式保存CollectionType字段输入,我需要使用<input>
元素来显示字段。
问题:
如何使这项工作?
Symfony和AngularJS的兼容性如何?是否建议一起使用它们?
感谢所有帮助。 提前谢谢!