如何将Angular2与Symfony

时间:2016-01-21 22:13:41

标签: php angularjs symfony angular

所以我的任务是为项目构建API和前端。我得到的唯一真正要求是我必须使用PHP来构建API。

我在原始PHP中开发过一次,这是一个为期两个月的小型个人项目,它是七年前的事。所以我查看了可用的框架并继续使用Symfony。

在前端,我希望继续使用Angular2。

我的API主要是内置的,但我现在的问题是服务于Symfony进程内的角度文件。似乎对于我需要的每条路径,我都需要在控制器中为该路由编写一个动作,我大部分时间都可以。但是我遇到的一个大问题是它总是假设我想要Twig作为我的引擎。所以我无法使用Angular使用的大括号。

这是完全可能还是让我自己陷入了不正确的境地?

编辑:现在我要继续用逐字标记

包装我的角
{% verbatim %}
  {{ angular code }}
{% endverbatim %}

4 个答案:

答案 0 :(得分:2)

你说:

  

似乎对于我需要的每条路径,我都需要写一个动作   该路线的控制器

但angular2用于单页应用程序(SPA),因此您只需要一个页面来提供它: <1路线> 1动作&gt; 1枝模板。

对于此模板,您可以更改开始和结束插值标记: https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider

或使用verbatim twig关键字为插值字符设置角度: http://twig.sensiolabs.org/doc/tags/verbatim.html

但是对于你的angular2模板,你不必使用树枝,不需要混合两种模板语言。您的API会将数据提供给angular,这会在模板中反映出来。

另一个好的做法是使用以下内容预编译$templateCache内的所有角度模板: https://www.npmjs.com/package/gulp-ng-template

答案 1 :(得分:1)

我更愿意独立开发前端和API。这对我来说就是一个API。

  

似乎对于我需要的每条路径,我都需要在控制器中为该路由编写一个动作,我大部分都可以使用。

- &GT;真的更糟。

对于twig angular语法冲突,您可以使用interpolateProvider服务更改开始和结束插值标记:

angular.module('myApp', []).config(function($interpolateProvider){
    $interpolateProvider.startSymbol('{[{').endSymbol('}]}');
});

请参阅docs

答案 2 :(得分:1)

我们正在将大型Symfony应用程序的UI移动到Angular,并决定使用API​​平台(https://api-platform.com/)。以前,我们使用过FOSRestBundle,但是正在为这个新版本删除它。

到目前为止,我们对这种方法感到满意。

您询问了如何在Symfony中提供Angular文件。我们选择将它们保存在单独的仓库中,因此它们甚至可以部署在不同的服务器上。这是我的建议,当然你可以将Angular文件放在/ web目录中。但是,这样做会使部署变得复杂。

答案 3 :(得分:1)

我也曾在symfony和angular2

工作

我该如何开始

don't merge two projects as we can do it for angular 1.4 version.
  

因为angular2是前端,它支持cli。

     

symfony是后端,所以尝试用作服务

我建议你应该使用symfony2作为服务

您可以在其中添加/编辑/删除并创建前端路由。

我用symfony2

制作了demo angular2
  

Github网址

https://github.com/afeef1915/Angular2

如果你终于

  

将angular2与symfony集成,然后会出现面部路由问题   因为symfony2不会理解angular2路由。

     

和twig语法非常类似于angular component.html文件