2013-04-07 136 views
2

我想攔截所有的控制器動作,做的兩件事情( - 在這個例子說,在URL查詢字符串值取決於一個選項)之一:攔截控制器 - Symfony2的

(1)返回一個數組剛剛變量而不是渲染模板

(2)準確地渲染模板,但忽略任何「延伸」該模板內的行動

這樣做的原因是,使用相同的服務器端代碼,選項1允許我只返回變量來表示一個Ajax請求,而選項2允許我只返回HTML的內容部分(for Ajax)而不是完整的HTML導航等。

我試過擴展一個控制器,但不斷收到令人討厭的'不符合Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller'的問題。

我試過使用事件偵聽器,這似乎讓我更接近,但我不認爲聽控制器事件實際上運行控制器。

我相信這應該很容易?

回答

1

您可以使用FOSRestBundle或僅用於其目的。

從README.md:

一個視圖層,以使輸出與格式無關控制器

https://github.com/FriendsOfSymfony/FOSRestBundle

+0

感謝。這是最好的方式,因爲它似乎矯枉過正我的簡單要求?我認爲我可以擴展一個控制器,或者非常小的東西。 – user2143356 2013-04-07 07:37:15

+0

=),也許這是矯枉過正。當然,您可以編寫監聽器,但如果您沒有時間,只需使用FOSRestBundle即可。 – 2013-04-07 07:55:39