Slim Frameworkで応答データをjsonp形式で返したい場合は、下記のようにすればよいです。jsonpのcallback関数名は、通常クライアントから指定してもらうことが多いです。
$app->get('/', function (Request $request, Response $response) {
$data = [
"foo" => "bar",
"foo2" => "bar2",
];
$callback = "onCallback";
// レスポンスヘッダをセット
$response = $response->withHeader('Content-Type', 'application/javascript; charset=UTF-8');
// レスポンスボディをセット
$jsonString = json_encode($data);
$response = $response->write("{$callback}({$jsonString});\n");
return $response;
});
ちなみにjsonpではなく、jsonで返したい場合はwithJson()を呼ぶだけで良いです。Content-TypeヘッダはwithJson()メソッドが自動でセットしてくれます
$app->get('/', function (Request $request, Response $response) {
$data = [
"foo" => "bar",
"foo2" => "bar2",
];
return $response->withJson($data);
});
こちらもおススメ