Php 是否可以覆盖Symfony2中的路由处理程序?
假设使用Symfony2创建了一个模板应用程序。它包含一个产品描述页面,路线的创建/处理如下:Php 是否可以覆盖Symfony2中的路由处理程序?,php,symfony,routing,Php,Symfony,Routing,假设使用Symfony2创建了一个模板应用程序。它包含一个产品描述页面,路线的创建/处理如下: class ProductController extends Controller { /** * @Route("/product/{id}") */ public function showDecription($id) { // ... } } 自定义应用程序是基于模板应用程序创建的。换句话说,模板应用程序提供“默认值” 是
class ProductController extends Controller
{
/**
* @Route("/product/{id}")
*/
public function showDecription($id)
{
// ...
}
}
自定义应用程序是基于模板应用程序创建的。换句话说,模板应用程序提供“默认值”
是否可以在不修改模板应用程序代码的情况下重写自定义应用程序中的路由处理程序?如果需要在模板应用程序中以不同的方式声明路由以使其可重写,则可以。在这种情况下应该如何处理?主要路由文件是
app/config/routing.yml
。我建议您再创建两个文件:app/config/routing\u default.yml
和app/config/routing\u override.yml
,然后根据需要编辑您的app/config/routing.yml
override:
resource: routing_override.yml
default:
resource: routing_default.yml
现在在路由默认中,您可以添加所有默认应用程序路由。在覆盖一中-所有附加的
此外,“替代”和“默认”中的管线名称也不应相同。如果要按名称覆盖管线,应更改包含的顺序 包含有关覆盖路线的以下信息:
路由
决不会在Symfony中自动导入路由。如果你想
包括来自任何捆绑包的路由,则必须手动
从应用程序中的某个位置导入(例如。
app/config/routing.yml)
“覆盖”捆绑包路由的最简单方法是永远不要导入它
完全与导入第三方包的路由不同,只需
将该路由文件复制到应用程序中,修改并导入
相反
你说的“申请”是什么意思?如果您的意思是完整的Symfony应用程序,并且希望通过来自另一个应用程序的路由覆盖它的路由,那么您需要为此设置您的web服务器。Symfony安装是独立的。自定义应用程序将从模板应用程序导入代码。只部署了一个应用程序:自定义应用程序。如何“导入代码”?复制/粘贴?我正在考虑创建一个捆绑包或一个应用程序,通过Composer等导入。你是说symfony2只记得为路由定义/配置的最后一个处理程序?如果有两个同名路由,则最后一个可用。如果有两条具有相同路径的路线-首先工作。