我正在研究Symfony2项目,并试图弄清楚如何将参数从路由配置传递到控制器。我知道我可以在路由配置中配置默认值,并使用函数声明中的相应var名称检索控制器中的值,但这不是我想要的。
我的用例如下。我的控制器中有一个标准方法,我想从2或3个不同的路径访问。根据要调用的路由,我想以不同方式“配置”该方法。我可以通过以下几种方式实现这一目标:
我可以使用route default数组来指定我的参数,但是必须确保使用正则表达式来确保在URL级别不会覆盖params(安全风险)。这是功能性的,但仍然有点cludgy而不是一个非常黑客。
我认为必须有更好的方法来做到这一点,但我似乎无法弄明白。有没有办法从控制器访问路由对象,并访问不同的配置参数?
答案 0 :(得分:0)
您可以从路由器服务中提取实际路由。类似的东西:
$routeName = $this->container->get("request")->get("_route");
$router = $this->container->get("router");
$route = $router->getRouteCollection()->get($routeName);
不确定这是否会是如此出色的设计。考虑将$ configName传递给您的控制器方法,在配置文件中添加一个具有相同名称的参数,然后使用getParameter访问它。这将消除等式中的路线。
类似的东西:
zayso_arbiter_import:
pattern: /import
defaults: { _controller: ZaysoArbiterBundle:Import:index, configName: 'someConfigName' }
public function importAction(Request $request, $configName)