2016-07-27 67 views
2

这是我第一个关于堆栈溢出的问题,所以请善待!Angular2和Symfony合并在同一个应用程序

我设计了一个基于Symfony服务器的应用程序,它具有几乎完整的后端接口。使用symfony路由器,我可以使用url(例如www.domain.com/admin)在后端登录并查看后端页面。

基于这个后端,我想创建一个Angular2应用程序来处理前端。让它为首页网址(www.domain.com)工作是非常直接的。但是,如果我使用任何可能在Angular2应用程序(例如www.domain.com/inner-page)中工作的子路由,Symfony路由器会接管并引发404 Not Found - NotFoundHttpException。

问题是,我如何在“并行”中使用两台路由器? www.domain.com/admin下的任何URL都将由Symfony路由器处理,并由Angular2路由器处理任何其他网址?

编辑

谢谢您的回复!

我有一些想法。它可能不够高雅,因为它需要手动排除来自symfony的角度路线,反之亦然,但它看起来更干净。我仍然工作在它的,所以它仍然是一个理论概念:

  • 包含“/管理/”每个URL,Symfony的路由器将成为后端树枝,PHP页面,因为它是专门用来做。不过,对于任何其他网址,一个简单的控制器将只提供角度应用程序。

  • 另一方面,在前端,路由器将正常工作。但是,如果url包含“/ admin /”,它将由一个Angular组件处理,该组件将在其OnInit函数内简单地更改window.location.href,以重定向到Symfony后端。

+0

欢迎来到Stack Overflow!请编辑你的问题,所以我们知道发生了什么。发布产生问题所需的最小代码量。 – Ares

回答

1

角度应用程序应该单独构建,Symfony是一个后端框架,并不是一个用于构建角应用程序的好选择。

我创建了一个如何与FOS User Bundle和FOS OAuth Server Bundle一起使用2来处理身份验证的示例。

现在已经有几年了,但是应该给你一个关于如何一起使用它们的好主意。

Github现在正在运行,但当它返回时我会用链接更新它。

编辑: https://github.com/mbates/Symfony2-AngularJs

+0

谢谢你的回复!我确实是单独构建它们的,但在某些时候我必须将它们合并,因为我希望前端和后端都托管在同一台服务器上。在单个路由(www.domain.com)的情况下,可以通过将角度/ html文件放置在symfony项目(web和视图目录)的正确位置来实现。但是,角度子路由不会以这种方式工作,因为symfony路由器具有优先级并引发上述错误。 – mpilliador

+1

我不知道我明白你想要设置什么。为什么symfony网站和角度网站位于相同的网址上?为它们设置不同的子域会更容易,所以nginx/apache可以处理它们中的哪一个被使用。我认为你让事情变得更加困难,那么他们需要尝试将它们放在一起,因为你必须配置symfony路由和防火墙来排除特定路由(角度页面) – mike

+0

大概你是对的,复杂的事情..无论如何,谢谢你的回复! – mpilliador

0

AngularUI routing框架AngularJS为您AngularJS应用路由目的使用。您可以使用Angular UI-Routing框架来管理应用程序的前端,而Symfony2负责处理应用程序的后端。角JS UI路由URL的意志是这样的,

www.domain.com/#page1 

,而不是这个,

www.domain.com/page1 

哈希(#)后的URL不会Symfony2中的一部分。将Symfony2网址映射到Angular UI-Router网址的地方将处于不同的状态。看看这个tutorial。我希望AngularUI能够解决你的问题:)

干杯!

相关问题