Symfony2 / 路由 / 使用参数作为控制器或动作名称

Posted

技术标签:

【中文标题】Symfony2 / 路由 / 使用参数作为控制器或动作名称【英文标题】:Symfony2 / routing / use parameters as Controller or Action name 【发布时间】:2013-09-03 14:37:13 【问题描述】:

是否可以使用给定的参数路由到控制器/动作?

例如:

my_custom_route:
    pattern: /controller/action
    defaults:  _controller: AcmeDemoBundle:[controller]:[action] 

我希望将 [controller] 和 [action] 替换为给定路由的参数值。

I.E : http://www.somedomain.com/Content/add 应该在包“AcmeDemoBundle”中调用控制器“ContentController”的操作“addAction

【问题讨论】:

你为什么要这样做?这听起来像一个丑陋的黑客。如果你懒得把所有的路由都打成 yml,我建议你改用注解。 Convention-based routing in Symfony2 的可能重复项 您可以创建一个控制器来接收控制器和操作并执行该操作,但您不应该这样做:这是一种不好的做法 当您为网站创建后端(管理员)应用程序时,您总是(我认为...)对不同的表有相同的操作:add new行,更新现有一个和删除一个。可能是“我懒得在 yml 中输入所有路线”;-) @jzpululu 是的,这叫做CRUD,你有一个 symfony 命令可以轻松生成这些。 php app/console doctrine:generate:crud 【参考方案1】:

是的,您可以这样做,但不建议这样做。如果您必须重构代码并且您的控制器/操作必须更改,您将来会做什么?您可能会破坏链接和功能,同时可能会丢失可能已针对该特定路线完成的搜索引擎优化。

【讨论】:

这是个好主意,如果第一个默认控制器路由不起作用..然后它会找到一个自我声明的路由!如果以后需要改,就改吧。。所以如果你做不到,那你知道除了使用htaccess之外还有什么工具或框架可以做的吗……这是一个常见的需求,我有1000个奇怪的页面都使用相同的路由控制器/动作,为什么在地球上我必须声明每一个该死的......应该有一个共同的路由!像 C#.NET MVC 4.0。期待答案

以上是关于Symfony2 / 路由 / 使用参数作为控制器或动作名称的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2:控制器中动作/路由的完整路径

如何使用 Symfony2 路由组件将路由与控制器绑定

symfony2 控制器的功能测试:如何生成路由

如何在 Symfony2 中获取控制器的所有路由列表?

如何在Symfony2中获取控制器的所有路由列表?

允许没有参数的 Symfony2 路由的尾部斜杠?