2015-09-25 42 views
0

这个问题实际上包括了问题。结合AngularJS和Symfony2中 - 路由和非AJAX页面访问

一个是我怎么可以创造一定的路线,但所有其他呼叫路由一个HTML页面(基本上,我想Symfony2中采取某些URL的,但一切正在留给AngularJS)。

get_user: 
    path:  /api/getuser 
    defaults: { _controller: AcmeDemoBundle:Api:GetUser } 
create_user: 
    path:  /api/createuser 
    defaults: { _controller: AcmeDemoBundle:Api:CreateUser } 
... 
other: 
    path  [[ what to put in? ]] 
    defaults: { _controller: AcmeDemoBundle:Main:GetPage } 

任何URL之后,角应采取与ngRoute,通过后端other路线。

现在第二个问题我有是,是否可以限制所有路由(get_usercreate_user ...),除了任何一种叫未阿贾克斯other路线?对于那些了解ASP.NET的人,我想要命名一个文件_file.cshtml的结果(您不能直接访问它,但只能通过AJAX调用)

回答

2

我不是很确定我明白你需要什么。

您可以简单地创建angularJS路线和写在相同或其他URL Symfony2的路线,而不是用同样的方法。

如果你真的想定义多个URL路径,您能给我们的参数作为URI的部分,像这样:

other 
    pattern: /{first}/{page} 
    defaults: { _controller: AcmeDemoBundle:Api:GetPage } 
    requirements: 
     first: keyword|secondKeyword 
     two: \d+ 

在这个例子中,URL的第一个参数可以是关键字之一,其次必须通过正则表达式进行验证。

然后,如果你想限制你的路线,AJAX调用,使用条件:

create_user: 
    path:  /api/createuser 
    defaults: { _controller: AcmeDemoBundle:Api:CreateUser } 
    condition: "request.isXmlHttpRequest()" 

或限制你的路线,具体的方法(S):

create_user: 
    path:  /api/createuser 
    defaults: { _controller: AcmeDemoBundle:Api:CreateUser } 
    methods: POST 

但我认为你有为每条路线定义它。

+0

第二个答案是好的,非常感谢!但我怀疑你明白我想要的第一个问题。我希望所有的URL,比“其他”的路线上面定义的那些外,还送了那些(“本地主机:8000/mymade /上/ URL”,甚至只是“本地主机:8000”)所有导致一个控制器动作。 – NemanjaT

+0

我发现的第一个问题的解决方案,并张贴在下面,如果你有兴趣。 – NemanjaT

1

我接受@chalas_r的回答,因为它解决了我的一些顾虑,但是,对于那些谁碰上这种问题,这是解决的第一个问题我有:RIGHT HERE

要使这短暂的,这是other路线我现在有:

other: 
    pattern: /{first} 
    defaults: { _controller: AppBundle:Default:index } 
    requirements: 
     first: ".+" 

requirements: first: ".+"基本上overrites默认[^/]+值sepearates的URL由/字符。所以,现在我可以弥补我自己的路线,如:

localhost:8000/my/route/i/just/made/up 

,它还是会带我去AppBundle:Default:index控制器。