如何覆盖 Symfony2 中的路由

How to override route in Symfony2

它不是 override single route in symfony2 的副本。请耐心看完我的问题。

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

下一个捆绑包是自定义捆绑包。如何扩展 DashboardController、覆盖 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 将路由收集到一个数组中,其中键是路由名称。通过在文件末尾添加具有相同名称的路由,先前定义的路由将被覆盖。