我正在开发一个包含前端和后端的包。我遵循有关结构控制器和后端和前端部件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