如何在Symfony2中覆盖路由
这不是一个复制品。请耐心地仔细阅读我的问题 我的问题与上面的问题不同。 因此,我的Symfony应用程序具有标准结构。但它是以特定的方式配置的如何在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: "
- 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将路由收集到一个数组中,其中键是路由的名称。通过在文件末尾添加具有相同名称的路由,先前定义的路由将被覆盖