我正在開發一個包含前端和後端的包。我遵循有關結構控制器和後端和前端部件here和here的視圖的最佳方法的說明。但我找不到如何在我的路由配置文件中指定子目錄。我試圖把這個,但它不工作。Symfony2:子目錄中的路由控制器和視圖
post:
pattern:/
defaults: { _controller: "HavactBlogBundle:Backend/Post:Backend/index" }
我正在開發一個包含前端和後端的包。我遵循有關結構控制器和後端和前端部件here和here的視圖的最佳方法的說明。但我找不到如何在我的路由配置文件中指定子目錄。我試圖把這個,但它不工作。Symfony2:子目錄中的路由控制器和視圖
post:
pattern:/
defaults: { _controller: "HavactBlogBundle:Backend/Post:Backend/index" }
我relsoved暴露我的控制器作爲服務
post:
pattern:/
defaults: { _controller: "my.controller.service.id:indexAction" }
試試這個:
defaults: { _controller: Org\FancyBundle\Controller\Page\Blog\CommentsController::fancyAction }
的區別:用反斜槓
post:
pattern:/
defaults: { _controller: "HavactBlogBundle:Backend\Post:index" }
反斜線scape下一個字符「P」並導致此錯誤:無法找到控制器「HavactBlogBundle:Backendost」。我解決了雙反斜槓和控制器,但不適用於模板。索引是在後端子目錄中,我需要的是這樣的HavactBlogBundle:Backend \\ Post:Backend/Post/index – smoreno 2012-03-19 04:08:15
當你想在動作索引中渲染模板使用這個:'return $ this-> render('HavactBlogBundle: Backend:Post:index.html.twig');' – 2012-03-19 09:02:14
是的,這可以在一個動作中呈現模板,但不在路由配置文件中。默認:{_controller:「HavactBlogBundle:Backend:Post:index.html.twig」} – smoreno 2012-03-19 13:12:25
路由YAML更換斜線這裏是臨屋區我不會在字符串周圍使用引號,而YAML可以。 在樹枝模板:
{% render "Org\\FancyBundle\\Controller\\Page\\Blog\\CommentsController::listAction" with {} %}
我從來沒有任何問題與逃避,我知道的。 Symfony 2.0.9,Windows/IIS上的PHP 5.3.9(嘆氣)
對於那些不想將控制器公開爲服務的人(這是對問題的間接解決方案),可以這樣指定路由。
route_name: path: /path defaults: { _controller: BundleName:Namespace/Controller:action }
Namespace
是您在bundle的Controller
目錄下創建子目錄,然後/
分離它。
其他所有工作都應該一樣。
在Symfony 2.7中適用於我。用於分隔的斜槓很好 - 記住更正移動到子目錄的那些控制器的名稱空間非常重要。 – Atan 2016-06-21 11:29:32
不簡單':'工作? 'HavactBlogBundle:Backend:Post:index' – 2012-03-18 19:59:19