2016-03-03 135 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 ...小心解释为什么指向解释主题的特定文档部分的指针是“无用”的? –