自定义Symfony2 CollectionType表单字段显示

时间:2016-07-15 06:58:44

标签: javascript forms symfony tags

我已经尝试过Symfony表格一段时间了。毫无疑问,Symfony的FormType是一个很棒的功能,可以帮助创建健壮的表单,特别是与相关实体(例如ManyToMany,OneToMany等)。在持久性方面,FormType使我的工作变得简单复杂。其中一个案例是嵌入式表单,其中有多个(简称CategoryTag)实体与ManyToMany关系。使用FormType,我可以创建一个'选择下拉列表'使用ChoiceType表单字段选择类别的字段,嵌入另一个带有多个'文本输入的CollectionType字段'字段接受多个tagname,最后一个提交按钮。我只需要在cascade = {persist}实体和Wallah的categoryname属性上使用注释添加Category选项!

现在如果我想创建一个可以接受多个标签的单个输入字段,而不是拥有多个输入字段。像这样:

enter image description here

为此,我可以使用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>元素来显示字段。

问题:

  1. 如何使这项工作?

  2. Symfony和AngularJS的兼容性如何?是否建议一起使用它们?

  3. 感谢所有帮助。 提前谢谢!

0 个答案:

没有答案