Skip to content

Instantly share code, notes, and snippets.

@meze
Created February 5, 2013 08:20
Show Gist options
  • Save meze/4713049 to your computer and use it in GitHub Desktop.
Save meze/4713049 to your computer and use it in GitHub Desktop.
<?php
namespace App\YourBundle\EventListener;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class BodyListener
{
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!count($request->request->all())
&& in_array($request->getMethod(), array('POST', 'PUT', 'PATCH', 'DELETE'))
) {
$contentType = $request->headers->get('Content-Type');
$format = null === $contentType
? $request->getRequestFormat()
: $request->getFormat($contentType);
if ($format !== 'json') {
return;
}
$data = @json_decode($request->getContent(), true);
if (is_array($data)) {
$request->request = new ParameterBag($data);
}
}
}
}
<service id="your_bundle.body_listener" class="App\YourBundle\EventListener\BodyListener">
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" />
</service>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment