Symfony2 - 与AngularJS捆绑在一起

时间:2014-05-01 11:47:32

标签: javascript php angularjs symfony

我正在开发一个主要基于Symfony2和Twig-Templates的项目。我现在想要编写一个基于AngularJS的新包。也就是说,大多数网站的菜单和导航仍然在php / Twig中,但是用户列表应该用AngularJS编写。 我有一个AngularJS前端,运行的文件结构如下所示:

  • 应用程序/
    • JS​​ /
      • app.js
    • 泛音/
      • users.html
      • user_detail.html
    • 的index.html
  • bower_components /
  • ...

现在,我只想在Symfony2中的给定路径下显示它。 有没有办法说,我不希望Symfony中的任何Controller用于前端 - 只是静态传送?

此类申请的一般合理方法是什么? 我发现的大多数教程都假设,整个网站都是用Angular编写的,而不仅仅是一个包。

感谢您的任何提示!

1 个答案:

答案 0 :(得分:3)

我之前使用的是asoc/assetic-angular-js-bundleGitHub),当与资产过滤器配置一起使用时,意味着所有部分和脚本都被合并到一个文件中。

他们的github页面说明在你的树枝模板中使用以下内容..

{% javascripts filter="angular"
    '@BundleName/Resources/views/aTemplate.html.ng'
    '@BundleName/Resources/views/fooTemplate.html.ng'
    '@BundleName/Resources/views/moarTemplates/*.html.ng'
    %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

但是如果你使用..

// app/config/config.yml
assetic:
    filters:
        angular:
            apply_to: "\.ng$"
            resource: %kernel.root_dir%/../vendor/asoc/assetic-angular-js-bundle
                      /Asoc/AsseticAngularJsBundle/Resources/config/assetic.xml
                      // This is all one line
                      // Not sure why this was needed, I vaguely remember
                      // assetic not being able to find to config

然后你可以像你这样在你的twig javascripts部分调用你的部分..

{% javascripts
    '@BundleName/Resources/views/angular-app.js'
    '@BundleName/Resources/views/angular-controllers.js'
    '@BundleName/Resources/views/some-other-stuff.js'
    '@BundleName/Resources/views/aTemplate.html.ng'
    '@BundleName/Resources/views/fooTemplate.html.ng'
    '@BundleName/Resources/views/moarTemplates/*.html.ng'
    %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

然后我猜你可以在你希望它显示的一个树枝视图中包含上面的内容,或者你可以将它包含在你的所有模板中(取决于你想要如何处理脚本缓存以及什么不是)和只需使用常规的ng-view UserListController类型标记来调用它。

很抱歉,如果这与您提出的要求无关。在我开始写这篇文章时它非常有意义,但是我如何看待它,看起来我刚刚完全切断了。