csvan
csvan

Reputation: 9454

Symfony2 - access Request object from controller parameter list with multiple parameters

I am using Symfony 2.4, and according to the Docs, the correct way of retrieving the Request object in the controller is the following:

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

This works as expected. However, if I add a parameter to the controller, $request becomes null at runtime:

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

How do I work around this issue without using any older-but-deprecated methods for getting the request?

Note: if possible, a solution that does not involve the Request Stack recently introduced to Symfony 2.4 would be great, as it seems like overkill.

Upvotes: 2

Views: 1095

Answers (1)

Piotr Pasich
Piotr Pasich

Reputation: 2639

This works,

as I think the only difference is that I do not pass = null in parameters declaration

use Symfony\Component\HttpFoundation\Request;

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

In Symfony2 controllers it's not a good Idea to declare default value in the method definition - it should be done in routing definition.

In your case:

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

regards,

Upvotes: 2

Related Questions