我试图从Mongodb集合中读取一些数据并将结果返回到我的休息API。查询我的 Users 集合中的所有文档后,我将生成的数组发送到我的模板(此处为 Slim 微框架),最后调用 json_encode() 发送创建响应。这是我的代码:
<?php
require 'vendor/autoload.php';
//instancia o objeto Slim
$app = new 'Slim'Slim(array(
'templates.path' => 'templates'));
//List users
$app->get('/', function () use ($app) {
$mongo = new MongoClient('mongodb://user:pass@localhost:27017');
$db = $mongo->mydatabase;
$col = $db->users;
$cursor = $col->find();
$data = iterator_to_array($cursor, true);
$app->render('default.php', $data, 200);
});
//run Slim
$app->run();
?>
模板错误.php:
<?php
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);
?>
如果我在模板外调用回显json_encode($newa)
,一切正常。
输出为:
{
flash: {}
54b71d4e097a4dcd4bf49684: {...}-
54bc5bd5cdce605e70325c4e: {...}-
}
谁能告诉我这个"闪光:{}"是从哪里来的?我怎样才能让它消失?!谢谢。
flash
变量由 Slim 在渲染输出中添加,用于 Flash 消息传递。您可以禁用 Flash 中间件,但我希望您实际上希望使用 Response 对象而不是呈现的视图:
<?php
$app->get('/', function () use ($app) {
$mongo = new MongoClient('mongodb://user:pass@localhost:27017');
$db = $mongo->mydatabase;
$col = $db->users;
$cursor = $col->find();
$data = iterator_to_array($cursor, true);
$app->response->headers->set('Content-Type', 'application/json; charset=utf-8')
// print or echo output will be appended to Response
echo json_encode($data);
// Alternatively, explicitly set the Response body:
// $app->response->setBody(json_encode($data));
});
?>