Symfony2 - 从具有多个参数的控制器参数列表访问Request对象

时间:2014-01-16 07:18:00

标签: php symfony controller

我正在使用Symfony 2.4,根据文档,在控制器中检索Request对象的正确方法如下:

/**
 * @Route("/register/next", name="next_registration_step")
 */
public function nextAction(Request $request = null) {...}

这可以按预期工作。但是,如果我向控制器添加一个参数,$ request在运行时变为null:

/**
 * @Route("/register/next/{currentStep}", name="next_registration_step")
 */
public function nextAction(Request $request = null, $currentStep = 0) {...}

如何在不使用任何旧的但已弃用的方法来获取请求的情况下解决此问题?

注意:如果可能的话,最近引入Symfony 2.4的不涉及请求堆栈的解决方案会很棒,因为它似乎有点过分。

1 个答案:

答案 0 :(得分:2)

这有效,

因为我认为唯一的区别是我没有在参数声明

中传递= null
use Symfony\Component\HttpFoundation\Request;

/**
 * @Route("/hello/{name}", name="_demo_hello")
 */
public function helloAction(Request $request, $name)
{
    var_dump($request, $name);die();

在Symfony2控制器中,在方法定义中声明默认值并不是一个好主意 - 它应该在路由定义中完成。

在你的情况下:

 /*
 *
 * @Route("/register/next/{currentStep}", name="next_registration_step", defaults={"currentStep" = 0})
 */
public function next(Request $request, $currentStep) {...}

的问候,