2015-09-25 65 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控制器。