如何在Symfony2中覆盖路由

如何在Symfony2中覆盖路由,symfony,routes,symfony-2.3,Symfony,Routes,Symfony 2.3,这不是一个复制品。请耐心地仔细阅读我的问题 我的问题与上面的问题不同。 因此,我的Symfony应用程序具有标准结构。但它是以特定的方式配置的 app/config/routing.yml包含多个捆绑包路由,例如: _project_custom1: resource: "@ProjectCustom1Bundle/Resources/config/routing.yml" prefix: /custom1 _project_custom2: resource: "

这不是一个复制品。请耐心地仔细阅读我的问题

我的问题与上面的问题不同。 因此,我的Symfony应用程序具有标准结构。但它是以特定的方式配置的

  • app/config/routing.yml包含多个捆绑包路由,例如:

    _project_custom1:
        resource: "@ProjectCustom1Bundle/Resources/config/routing.yml"
        prefix:   /custom1
    _project_custom2:
        resource: "@ProjectCustom2Bundle/Resources/config/routing.yml"
        prefix:   /custom2
    
  • src/目录有两个bundle和下一个结构,例如

    Common/AdminBundle/Resources/config/routing.yml
    Common/AdminBundle/Resources/config/routing_dashboard.yml

    routing.yml
    包含以下几行:

    admin\u仪表板\u内容:
    资源:“@CommonAdminBundle/Resources/config/routing_dashboard.yml”
    前缀:/dashboard

    routing_dashboard.yml
    包含:

    admin\u仪表板\u许可证\u内容:
    路径:/license内容
    默认值:{u控制器:CommonAdminBundle:仪表板:licenseContent}

下一个包是定制包。如何扩展
仪表板控制器
、覆盖
licenseContentAction
和仅覆盖一个(
/license content
)路由并使Symfony使用我的自定义捆绑包配置

复制同一结构不起作用。 根据我的解释,我写了这样的东西:

<?php
namespace Custom\Custom1\Controller;
use Common\AdminBundle\Controller\DashboardController as BaseController;
class DashboardController extends BaseController
{
    public function licenseContentAction()
    {
       //return parent::licenseContentAction();
       die("HELLO!");
    }
}

只需将这些行添加到
app/config/routing.yml
文件中即可

admin_dashboard_license_content:
    path: /dashboard/license-content
    defaults: { _controller: CustomBundle:Dashboard:licenseContent }
并创建一个
DashboardController
,使用
licenseContentAction
方法将基本Symfony控制器扩展到
CustomBundle
命名空间中

现在是魔法……

如果要保留路径,必须在
routing.yml
文件的开头添加这些行。路由的名称必须不同(唯一),路径当然必须与覆盖路径相同

Symfony查找路径,当它与请求匹配时,会立即重定向到相应的控制器操作

如果要更改路径,请在
routing.yml
文件末尾添加这些行。路由的名称必须相同。我不确定以前定义的路由(路径)是否仍然存在,我想是的,并且使用此路径发出的请求是否仍在处理

Symfony将路由收集到一个数组中,其中键是路由的名称。通过在文件末尾添加具有相同名称的路由,先前定义的路由将被覆盖