2012-03-18 45 views
3

我正在開發一個包含前端和後端的包。我遵循有關結構控制器和後端和前端部件herehere的視圖的最佳方法的說明。但我找不到如何在我的路由配置文件中指定子目錄。我試圖把這個,但它不工作。Symfony2:子目錄中的路由控制器和視圖

post: 
    pattern:/
    defaults: { _controller: "HavactBlogBundle:Backend/Post:Backend/index" } 
+0

不簡單':'工作? 'HavactBlogBu​​ndle:Backend:Post:index' – 2012-03-18 19:59:19

回答

2

我relsoved暴露我的控制器作爲服務

post: 
pattern:/
defaults: { _controller: "my.controller.service.id:indexAction" } 
16

試試這個:

defaults: { _controller: Org\FancyBundle\Controller\Page\Blog\CommentsController::fancyAction } 

的區別:用反斜槓

post: 
    pattern:/
    defaults: { _controller: "HavactBlogBundle:Backend\Post:index" } 
+0

反斜線scape下一個字符「P」並導致此錯誤:無法找到控制器「HavactBlogBu​​ndle:Backendost」。我解決了雙反斜槓和控制器,但不適用於模板。索引是在後端子目錄中,我需要的是這樣的HavactBlogBu​​ndle:Backend \\ Post:Backend/Post/index – smoreno 2012-03-19 04:08:15

+1

當你想在動作索引中渲染模板使用這個:'return $ this-> render('HavactBlogBu​​ndle: Backend:Post:index.html.twig');' – 2012-03-19 09:02:14

+0

是的,這可以在一個動作中呈現模板,但不在路由配置文件中。默認:{_controller:「HavactBlogBu​​ndle:Backend:Post:index.html.twig」} – smoreno 2012-03-19 13:12:25

0

路由YAML更換斜線這裏是臨屋區我不會在字符串周圍使用引號,而YAML可以。 在樹枝模板:

{% render "Org\\FancyBundle\\Controller\\Page\\Blog\\CommentsController::listAction" with {} %} 

我從來沒有任何問題與逃避,我知道的。 Symfony 2.0.9,Windows/IIS上的PHP 5.3.9(嘆氣)

4

對於那些不想將控制器公開爲服務的人(這是對問題的間接解決方案),可以這樣指定路由。

route_name: path: /path defaults: { _controller: BundleName:Namespace/Controller:action }

Namespace是您在bundle的Controller目錄下創建子目錄,然後/分離它。

其他所有工作都應該一樣。

+0

在Symfony 2.7中適用於我。用於分隔的斜槓很好 - 記住更正移動到子目錄的那些控制器的名稱空間非常重要。 – Atan 2016-06-21 11:29:32