如何在专用包中引用自定义字段类型的twig?

问题描述 投票:0回答:1

我(仍然)尝试将 http://xoxco.com/clickable/jquery-tags-input 引入专用包中。到目前为止,我有一个类型作为文本的子级,还有一个数据转换器,可以将逗号分隔的字符串转换为对象数组,反之亦然。

现在我想用上面链接的 JQuery 代码来装饰文本字段。据我了解,我必须定义一个像

这样的块
{% block manytomanycomboselector_widget %}
{% spaceless %}
  {{ block('text_widget') }}
  <script>
    $(function(){
      $("#{{ id }}").tagsInput();
    });
  </script>
{% endspaceless %}
{% endblock manytomanycomboselector_widget %}

[MyTypeBundle]Resources/views/Form/fields.html.twig

现在,StackOverflow的文档和这个问题的答案都表明我必须在使用表单的模板或

fields.html.twig
中的某处引用
app/
,但这似乎不一定适用于其他字段类型包,尽管我在他们的代码中看不到原因。 除了此文件中的此块之外,我还必须在捆绑包内配置什么?

我也没有明白我必须在哪里放置 header 的 css 和 js 要求,以及如何处理像 jQuery 本身这样的一般要求。

php symfony twig
1个回答
4
投票

我有同样的问题,我通过将我的字段模板合并到

twig.form.resources
参数中来解决它。

因此,在我的包的 DI 扩展 (MyBundle/DependencyInjection/MyBundleExtension.php) 中,我添加:

$container->setParameter('twig.form.resources', array_merge(
    array('MyBundle:Form:field_widget.html.twig'),
    $container->getParameter('twig.form.resources')
));

请注意,您的捆绑包必须在

TwigBundle
中的
AppKernel
之后注册。

编辑:

表单字段不链接到任何 JS 或 CSS。所以,IMO,你有两个解决方案。

首先,您直接将 JS 和 CSS 包装在字段模板中,并且您的包保持独立。

其次,您指示最终用户每次使用您的字段类型时都需要手动包含一些 JSS 和 CSS。

IoFormBundle 和 GenemuFormBundle 使用第二种解决方案,如其文档中的解释。

© www.soinside.com 2019 - 2024. All rights reserved.