如何在Symfony2中覆盖路由

死侍

它不是symfony2中覆盖单个路由的副本请耐心等待,并仔细阅读我的问题。

我的问题不同于上面的问题。因此,我的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 /目录具有两个包和下一个结构,例如

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

    routing.yml 包含下几行:

    admin_dashboard_content: resource: "@CommonAdminBundle/Resources/config/routing_dashboard.yml" prefix: /dashboard

    routing_dashboard.yml 包含:

    admin_dashboard_license_content: path: /license-content defaults: { _controller: CommonAdminBundle:Dashboard:licenseContent }

下一个捆绑包是“自定义捆绑包”。如何扩展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!");
    }
}

如何建立路由文件以使扩展方法起作用?

大卫·卡门塔(David Kmenta)

您需要做的就是将这些行添加到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将路由收集到一个数组中,其中键是路由名称。通过在文件末尾添加具有相同名称的路由,将覆盖先前定义的路由。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章