Symfony2 单 Controller 多路由

标签 symfony routes definition

是否可以在单个定义中定义同一 Controller 的多个路由?

例如:

我想要一个单一的定义

/, /about, /privacy-policy

使用类似的东西

_home:    
    pattern:   {/ , /about, /privacy-policy}  
    defaults:  { _controller: AcmeDemoBundle:Home:index, about, privacy_policy }

我不想按照建议 here 在单独的定义中定义多个路由.

编辑:这是我的源代码:

<?php

namespace Acme\DemoBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class HomeController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction()
    {
        /*
         * The action's view can be rendered using render() method
         * or @Template annotation as demonstrated in DemoController.
         *
         */
        return $this->render('AcmeDemoBundle:Home:home.html.tpl');
    }
    /**
     * @Route("/about")
     */
    public function aboutAction()
    {
        return $this->render('AcmeDemoBundle:Home:about.html.tpl');
    }    
}

这是routing.yml的源代码

_home:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Home:index }
_welcome:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Welcome:index }
_demo_secured:
    resource: "@AcmeDemoBundle/Controller/SecuredController.php"
    type:     annotation

_demo:
    resource: "@AcmeDemoBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo

最佳答案

如果您没有为路线注释声明名称,symfony 会生成一个。 (“使用 @Route 注解定义的路由会被赋予一个由包名称、 Controller 名称和操作名称组成的默认名称。”来自 http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html)

通过声明多个路由,symfony 会生成一个名称(如果您不精确地指定您的名称),她可能会通过保留第一个来覆盖您的其他路由。

您可以尝试通过为注释中的每条路线随机命名来进行测试。

最后一件事是不要忘记您的根路由文件,通过添加指向您的包的链接(如文档中的示例)。

blog:
    resource: "@SensioBlogBundle/Controller"
    type:     annotation 

关于Symfony2 单 Controller 多路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836318/

相关文章:

javascript - Symfony2 级联下拉值通过 ajax 更改,提交时不接受

symfony - 商店用品 6 : How to add Products with variation as childrens to Parent Products in LineItems

c# - Jquery Ajax MVC Controller URL 问题

c++ - 带数组的列表( vector )定义

c++ - 类外的成员函数定义

c - 重新声明全局变量与局部变量

linux - 警告 : fgets(): SSL operation failed with code 1. OpenSSL 错误消息

php - 无法在 symfony 中删除 cookie

python - 路由器延迟加载

javascript - 以 Angular 处理两个 View 之间的数据