Reputation: 9454
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
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