[英]How to override route in 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
包含以下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将路由收集到一个数组中,其中键是路由名称。 通过在文件末尾添加具有相同名称的路由,将覆盖先前定义的路由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.