2016-03-03 136 views
1

我在設置響應的編碼時遇到了問題。 試過:Slim Framework:設置響應的編碼

  • $ app-> contentType('text/html; charset = utf-8');
  • header(「Content-Type:application/json」);
  • $ app-> response() - > header('Content-Type','application/json; charset = utf-8');

我卡住了...: -/

編輯
我已經下載了Slim/slim-skeleton通過作曲家。

我需要在返回JSON我Route.php

$app->get('/getStoresByBounds', function() use ($app, $stores) { 
    $app->contentType('application/json'); 

    $myStores = $stores->getStores(); 

    $app->response()->write(json_encode($myStores)); 

    $app->stop(); 
}); 

回答

1

你可以試試這個:)

// APP 
$app = Slim::getInstance(); 

// CONTENT-TYPE 
$app->contentType('application/json'); 

// STATUS 
$app->status(200); 

// RESPONSE ARRAY 
$response = array(); 

// PRINT THE RESPONSE ARRAY 
$app->response()->write(json_encode($response)); 
$app->stop(); 

或者通過嘗試訪問$app自己的函數中:

$app = \Slim\Slim::getInstance(); 

由於您使用V3,因此您可以使用:

$app = new \Slim\App(); 

$app->get('/getStoresByBounds', function (Request $request, Response $response) { 

    $myStores = $stores->getStores(); 

    $response->getBody()->write(json_encode($myStores)); 

    $newResponse = $response->withHeader(
     'Content-type', 
     'application/json; charset=utf-8' 
    ); 

    return $newResponse; 
}); 
+0

我不能在航線使用它 - 它說: 「未定義類」。試圖在路線中使用($ app)',但它不起作用。 –

+0

您是否添加了使用Slim \ Slim;在你班級的頂部?或者你可以顯示一些示例代碼? – Swag

+0

當我嘗試你的梯子的例子,它仍然說Slim是一個未定義的類。我使用最新版本的Slim,版本3.2.1。在版本2.6.1(我的最後一個項目)中沒有問題... :-( –

1

The Response/ Headers/ Set Header

$newResponse = $oldResponse->withHeader('Content-type', 'application/json'); 
+0

在文檔中看到它。但是什麼是'$ oldResponse'?我只需要發送路由中的響應。 –

+0

請查看[開始](http://www.slimframework.com/docs/)部分。響應是路由處理程序的第二個參數。現在我想到你的代碼...你在使用Slim 3嗎?我認爲,因爲你從來沒有提到使用舊版本,但你的代碼嘗試似乎不符合當前版本。 –

+0

To @downvoter ...小心解釋爲什麼指向解釋主題的特定文檔部分的指針是「無用」的? –