如何覆盖 Symfony2 中的路由
How to override route in Symfony2
它不是 override single route in 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!");
}
}
如何构建路由文件以使扩展方法正常工作?
您需要做的就是将这些行添加到 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 将路由收集到一个数组中,其中键是路由名称。通过在文件末尾添加具有相同名称的路由,先前定义的路由将被覆盖。
它不是 override single route in 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!");
}
}
如何构建路由文件以使扩展方法正常工作?
您需要做的就是将这些行添加到 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 将路由收集到一个数组中,其中键是路由名称。通过在文件末尾添加具有相同名称的路由,先前定义的路由将被覆盖。