在搜索中使用symfony2优化我的应用程序的可能性时,我选择JMSTwigJsBundle以允许使用twig模板前端或后端。
我使用composer来安装bundle和symfony(它是2.7.3版本)
我开始关注一个教程,他带我添加FOSJsRoutingBundle和JMSTwigJsBundle。第一个安装在第一个,工作完美,但第二个给我带来了不同类型的问题,从“Uncaught ReferenceError:goog is not defined”开始。我通过添加以下内容解决了这个问题:
官方文档(http://jmsyst.com/bundles/JMSTwigJsBundle)中所述app/autoloader.php
上的这两行:
$loader->add('JMS', __DIR__.'/../vendor/jms/twig-js-bundle');
$loader->add('TwigJs', __DIR__.'/../vendor/jms/twig-js/src');
使用以下行设置app/AppKernel.php
:
new JMS\TwigJsBundle\JMSTwigJsBundle(),
我还在app/config.yml
这些行添加:
Filters:
twig_js:
resource: "%kernel.root_dir%/../vendor/jms/twig-js-bundle/JMS/TwigJsbundle/Resources/config/services.xml"
apply_to: "\.twig$"
因此,我们可以在layout.html.twig
内找到以下行
{% javascripts
'js/fos_js_routes.js'
'%kernel.root_dir%/../vendor/jms/twig-js/twig.js
'@NameSpaceNameBundle/Resources/views/customFolder/example.html.twig'%}
<script language="javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
并且,感谢配置文件中的过滤器,我们不需要添加过滤器行。
这些修改来自:https://github.com/schmittjoh/JMSTwigJsBundle/pull/13 post 3
我也在这里进行修改:https://github.com/schmittjoh/twig.js/issues/35帖子2:
我找到了通过copyng文件解决此问题的方法 /Symfony/vendor/bundles/JMS/TwigJsBundle/Resources/config/services.xml 至 /Symfony/vendor/bundles/Symfony/Bundle/AsseticBundle/Resources/config/filters/twig_js.xml 并将服务ID从twig_js.assetic_filter更改为 assetic.filter.twig_js。
每次修改都会给我带来一个新错误:
未捕获的SyntaxError:意外的标记%
在创建的文件“exemple.html.twig.js:1”上。有关信息,twig文件如下所示:
{% twig_js name="example" %}
the html code
新文件上生成的内容......与twig文件完全相同。
那么,拜托,我需要做些什么才能让它发挥作用?感谢的
答案 0 :(得分:0)
为了使其工作并拥有任何.twig的编译版本,我必须包含&#34; YUIcompressor&#34;到app/config/config.yml
:
yui_css:
jar: "%kernel.root_dir%/Resources/java/yuicompressor.jar"
yui_js
jar: "%kernel.root_dir%/Resources/java/yuicompressor.jar"
并将相应的文件添加到关联路径。
然后我添加到layout.html.twig
{% javascripts filter='?yui_js'
'js/fos_js_routes.js'
'%kernel.root_dir%/../vendor/jms/twig-js/twig.js
'@NameSpaceNameBundle/Resources/views/customFolder/example.html.twig'%}
<script language="javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
最后我使用app / console资产:install和app / console assetic:dump来检查它们是否没有错,刷新并且没关系(至少对我而言)。