“flash”:{} 被添加到我的 JSON 输出中,当在 Slim PHP 微帧ork 的模板中调用json_enco


"flash":{} is added to my json output when json_encode is called inside the template of Slim PHP microframeork

我试图从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));
    });
?>