I have seen the request object being passed to the controller action method as a parameter like this:
public function addAddressAction(Request $request)
{
...
}
I have also seen it within the action method where it is gotten from the container:
public function addAddressAction()
{
$request = $this->getRequest();
...
}
Which one is better? Does it matter?
If you take a deeper look at the Symfony2 Base Controller code, you may notice that getRequest()
is marked as deprecated since version 2.4 and will be removed in 3.0.
/*
* ...
* @deprecated Deprecated since version 2.4, to be removed in 3.0. Ask
* Symfony to inject the Request object into your controller
* method instead by type hinting it in the method's signature.
*/
public function getRequest()
{
return $this->container->get('request_stack')->getCurrentRequest();
}
Introduced by the following evolution,
And, here's the upgrade from 2.x to 3.0 documentation.
Conclusion,
Your Request should then be part of your action's signature.
As far as I know there's no difference. It doesn't interrupt affect much either way. Even if you want to specify required parameters in your action. E.g.
/**
* @Route("/edit/{id}", name="edit")
*/
public function editAction(Request $request, $id)
{
// Both $request and $id are available
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With