JMSTwigJsBundle无法编译

时间:2015-08-03 17:28:04

标签: javascript php symfony configuration twig

在搜索中使用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文件完全相同。

那么,拜托,我需要做些什么才能让它发挥作用?感谢的

1 个答案:

答案 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来检查它们是否没有错,刷新并且没关系(至少对我而言)。