如何将 Angular 与 Symfony 集成


How to integrate Angular with Symfony

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

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

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

我已经基本构建了API,但是我现在的问题是在Symfony进程内提供角度文件。似乎对于我需要的每个路径,我都需要在该路由的控制器中编写一个操作,我在很大程度上可以接受。但是我刚刚遇到的一个大问题是,它总是假设我想要Twig作为我的引擎。所以我无法使用 Angular 使用的牙套。

这是可能的还是我错误地将自己绑在了这个上面?

编辑:现在我将继续将我的角度包装在逐字标签中

{% verbatim %}
  {{ angular code }}
{% endverbatim %}

你说:

似乎对于我需要的每个路径,我都需要编写一个操作 该路由的控制器

但是 Angular2 用于单页应用程序 (SPA),因此您只需要一个页面即可提供它:1 条路线> 1 个动作> 1 根树枝模板。

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

或者使用 twig 关键字verbatim让插入角度字符:http://twig.sensiolabs.org/doc/tags/verbatim.html

但是对于您的 angular2 模板,您不必使用 twig,无需混合两种模板语言。您的 API 将数据提供给角度,以将其反映在模板中。

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

我也在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 组件.html文件非常相似

我更愿意独立开发前端和API。对我来说,这将是API的重点。

似乎对于我需要的每个路径,我都需要在该路由的控制器中编写一个操作,我在很大程度上可以接受。

->真的更糟。

对于 twig 角度语法冲突,您可以使用插值提供程序服务更改开始和结束插值标签:

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

请参阅文档。

我们正在将

一个大型Symfony应用程序的UI迁移到Angular,并决定使用API平台(https://api-platform.com/)。 以前,我们使用 FOSRestBundle,但在这个新版本中放弃了它。

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

你问过从Symfony内部提供Angular文件的问题。 我们选择将它们保存在单独的存储库中,因此甚至可以将它们部署在不同的服务器上。 这是我的建议,当然你可以把 Angular 文件放在/web 目录中。 但是,这样做会使部署复杂化。