Skip to main content

Creating JSONP(adding) responses with Silex

This blog post might be outdated!
This blog post was published more than one year ago and might be outdated!
· One min read
Stephan Hochdörfer
Head of IT Business Operations

Recently I had the need to extend a Silex application to be able to return JSONP responses when needed. I was looking for a generic approach and came across a blog post by Raphael Stolt who solved the problem with a clever "after middleware". This is the code you need to add to your app.php file:

use Symfony\Component\HttpFoundation\JsonResponse;

$app->after(function (Request $req, Response $res) {
if ($req->get('jsonp_callback') !== null && $req->getMethod() === 'GET') {
$contentType = $res->headers->get('Content-Type');
$jsonpContentTypes = array(
'application/json; charset=utf-8',

if (!in_array($contentType, $jsonpContentTypes)) {
// Don't touch the response

if ($res instanceof JsonResponse) {
} else {
. '(' . $res->getContent() . ');'

You just need to add the code above and everything else will work magically if your request contains a jsonp_callback variable and you returned JSON content in your controller function.