首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP Slim 3路由组中使用Response->withJson?

如何在PHP Slim 3路由组中使用Response->withJson?
EN

Stack Overflow用户
提问于 2018-06-25 04:44:27
回答 1查看 3K关注 0票数 1

我试图获得内部的$response由共同的网址分组的个别路线。在单独的路由中,不对它们进行分组,我只需这样做,它就起作用了:

代码语言:javascript
复制
$app->get('/news', function($req, $resp) use ($app) {
      return $resp->withJson([ 
         "someProp" => $someValue,
       ])->withStatus(200);
}

但是当我对我的路由进行分组时,比如那些属于ADMIN部分的路由,我不知道如何获取请求和响应实例,如下所示:

代码语言:javascript
复制
$app->group('/admin' function() {
     $this->get('/dashboard', function(Request $req, Response $resp) {
         return $resp->withJson(["property" => $someValue]);
});
});

当我使用$resp时,应用程序会崩溃,但如果我将其更改为一个简单的"echo“,它将返回纯文本,这表明它可能没有正确获取响应对象。

我已经导入了正确的库:

使用\Psr\Http\Message\ServerRequestInterface作为请求;

使用\Psr\Http\Message\ResponseInterface作为响应;

我得到了一些错误,比如:

未捕获闭包:传递给TypeError::{closure}()的参数1必须是Request的实例,给定的Slim\App的实例

我已经阅读了所有的文档页面,但根本不工作……

EN

回答 1

Stack Overflow用户

发布于 2018-06-25 06:28:11

最主要也是最大的问题与请求-响应无关。当您必须对一些路由进行分组时,使用Slim Framework^3.0的正确应用程序结构如下:

代码语言:javascript
复制
// First inject this
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app->group('/admin', function() use ($app){


    $app->get('/secciones/activas', function ( Request $request, Response $response ){
    //return response here

    return $response->withJson(['someProp' => $pDOResult ]);

})
});

如果你看这一行:

return $response->withJson('someProp‘=> $pDOResult );

我传递了一个结果PDO::FETCH_ASSOC集,字符集配置有问题,数据库数据包含导致JSON解析器崩溃的特殊字符,所以我在$db->connect();之后立即用下面这一行修复了它

代码语言:javascript
复制
$db->exec("SET NAMES 'utf8';");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51013799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档