我正在开发一个 Symfony2 项目,并试图弄清楚如何将参数从路由配置传递到控制器。我知道我可以在路由配置中配置默认值,并在函数声明中使用适当的 var 名称检索控制器中的值,但这并不是我想要的。
我的用例如下。我的控制器中有一个标准方法,我想从 2 个或 3 个不同的路由访问它。根据调用的路由,我想以不同的方式“配置”该方法。我可以通过以下几种方式做到这一点:
- 在我的控制器中,使用 `$this->container->get("request")->get("_route") 检查路由名称,但这很难看,然后我被硬编码为路由名称。将配置移动到控制器,这应该只是逻辑而不是配置。
- 创建一个基本控制器类,并为我的不同路由子类化每个方法。然后,每个子类方法都将在该方法中具有必要的配置。比 #1 更清洁的解决方案,但在具有多个类以满足简单需求的意义上仍然“重”,并且仍然将配置数据推送到业务逻辑中。
- 将配置数据放入路由配置中。在控制器中,根据需要访问配置数据。理想的解决方案,但不知道如何。
我可以使用路由默认数组来指定我的参数,但必须确保使用正则表达式来确保参数不会在 URL 级别被覆盖(安全风险)。这是功能性的,但仍然有点笨拙,而不是一个漂亮的黑客。
我认为必须有更好的方法来做到这一点,但我似乎无法弄清楚。有没有办法从控制器访问路由对象,并访问不同的配置参数?