我(仍然)在尝试将http://xoxco.com/clickable/jquery-tags-input引入到一个专用的bundle中。到目前为止,我有一个类型作为text的子类型和一个数据转换器,用于将逗号分隔的字符串转换为object的数组,反之亦然。
现在我想用上面链接的JQuery代码装饰文本字段。据我所知,我必须定义一个像
这样的块{% block manytomanycomboselector_widget %}
{% spaceless %}
{{ block('text_widget') }}
<script>
$(function(){
$("#{{ id }}").tagsInput();
});
</script>
{% endspaceless %}
{% endblock manytomanycomboselector_widget %}
in [MyTypeBundle]Resources/views/Form/fields.html.twig
现在,文档和这个问题的答案在StackOverflow状态,我必须引用fields.html.twig
在某个地方,要么在模板中使用的形式或在app/
,但这似乎不是必要的其他字段类型的束,虽然我不能看到他们的代码为什么。除了文件中的这个块,我还需要在bundle中配置什么?
我也没有得到我必须把css和js的头要求,以及我如何处理一般的要求,如jQuery本身。
我也有同样的问题&我通过将字段模板合并到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')
));
注意,你的bundle必须在AppKernel
中的TwigBundle
之后注册。
表单字段没有链接到任何JS或CSS。所以,在我看来,你有两个解。
首先,你直接包装你的JS &字段模板中的CSS和bundle保持独立。
其次,你告诉最终用户他们需要手动包含一些JSS &CSS,每次他们使用你的字段类型。
IoFormBundle &GenemuFormBundle使用第二种解决方案,就像他们的文档中解释的那样。