所以我的任务是为项目构建API和前端。我得到的唯一真正要求是我必须使用PHP来构建API。
我在原始PHP中开发过一次,这是一个为期两个月的小型个人项目,它是七年前的事。所以我查看了可用的框架并继续使用Symfony。
在前端,我希望继续使用Angular2。
我的API主要是内置的,但我现在的问题是服务于Symfony进程内的角度文件。似乎对于我需要的每条路径,我都需要在控制器中为该路由编写一个动作,我大部分时间都可以。但是我遇到的一个大问题是它总是假设我想要Twig作为我的引擎。所以我无法使用Angular使用的大括号。
这是完全可能还是让我自己陷入了不正确的境地?
编辑:现在我要继续用逐字标记
包装我的角{% verbatim %}
{{ angular code }}
{% endverbatim %}
答案 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 angular2Github网址
https://github.com/afeef1915/Angular2
如果你终于
了将angular2与symfony集成,然后会出现面部路由问题 因为symfony2不会理解angular2路由。
和twig语法非常类似于angular component.html文件