它不是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将路由收集到一个数组中,其中键是路由名称。通过在文件末尾添加具有相同名称的路由,将覆盖先前定义的路由。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句