带有资产的 symfony 自定义表单类型

symfony custom form type with assets

我在 symfony2 中创建了自定义表单类型。此表单类型有自己的模板,并且工作正常。

表单类型还需要一些 javascript 在客户端才能很好地工作。 我想使用我用来呈现小部件的相同模板将此 javascript 添加到页面。手动执行此操作有点麻烦。 我可以在每个页面上手动添加 javascript,但如果自动添加就更好了。

我不能在元素本身之前或之后添加 javascript,因为它依赖于 jquery,它只加载在正文的底部。

我尝试使用 "main template" 中定义的块(名为 block_javascript)将自定义 javascript 添加到页面的页脚,但似乎表单的呈现工作方式略有不同,块不可用。

我正在使用 assetic 来准备 return assets。

有没有一种方法可以在呈现表单小部件时使用正在呈现的主模板中的块?

我还没有考虑所有的后果或它是否可行,但这里有一个可以解决您的问题的想法:使用事件调度程序。

  • 一个资产添加事件
  • 一项服务,其中包含要使用和订阅上述事件的资产列表
  • 使用上述服务使模板中的资产可访问的 Twig 扩展
  • 使用正确的参数在您的表单类型的 buildView() 函数中触发事件
  • 在布局模板中使用 Twig 扩展

理论上应该可行。