Почему бы просто не использовать объект ответа Слима?(также ... зачем выходить?)
$dataAry = // Some data array
$response = $app->response();
$response['Content-Type'] = 'application/json';
$response['X-Powered-By'] = 'Potato Energy';
$response->status(200);
// etc.
$response->body(json_encode($dataAry));
// Or echo json_encode($dataAry)
Позвольте мне предисловие, сказав, что я все еще считаю себя нубом, поэтому, если я делаю ошибки, исправьте меня, чтобы я мог учиться.Но я играл с похожей проблемой / вопросом, и я подумал, что могу вмешаться с 2 центами и заархивировать немного больше обсуждения по этому вопросу.Чем больше информации о Slim на стеке, тем лучше.
Я в основном играл с той же вещью и заметил, что вы используете exit ;Сначала я использовал exit также потому, что echo включал в себя кучу HTML и копировал то, что возвращалось моему вызову AJAX.Когда я использовал выход, он аккуратно вырезал HTML, но тогда объект ответа Slim не изменял заголовки ответа, как я определил (см. Код выше).
Я понял, что это не так, как Slimбыл предназначен для работы.Используйте эхо, а не выход.ПРИМЕЧАНИЕ. - Slim Doc:
Всякий раз, когда вы выводите содержимое echo () из обратного вызова маршрута, содержимое echo () записывается> в выходной буфер, а затем добавляется в тело ответа перед HTTPответ возвращается клиенту.
Это удобно, но я не смог повторить.То, что я испортил, было большей проблемой.Отделение контента от поведения.Если вы похожи на меня, вы настраиваете одностраничное приложение, где этот код находится в основном на index.php.Существует исходный HTML, который мне нужно было загрузить, поэтому я включил его на этой странице.Мне нужно было создать более чистое разделение.Моя маршрутизация была правильно настроена, и поэтому, когда люди GET '/' Slim_Views (см. Разработка Rel.) Возвращает мне отрендеренный шаблон html и js.Блестяще!
Теперь у меня есть все инструменты Slim, и мой код намного чище, отдельно, управляем и более совместим с протоколами http.Я думаю, это то, для чего нужны рамки.: -)
ПРИМЕЧАНИЕ: я не говорю, что это все, что обернулось с вашей стороны, но я подумал, что вопрос и ваши настройки кажутся очень похожими.Это может помочь другому новому парню, который бродит по этому же пути.
ОБНОВЛЕНИЕ: Как упоминает @alttag, этот ответ устарел (Slim 2)
Для Slim3 см. Ответ ниже или см. Эту страницу в документации