【发布时间】:2014-04-05 05:49:59
【问题描述】:
我正在尝试在 Slim 框架中实现一个简单的中间件,它在响应正文中添加一个数组元素。如果没有中间件,我将得到正确的结果为{"mytest":"running"}。我真正想要的是让中间件合并另一个元素并使其成为{"mytest":"running","MODE":"development"}。相反,我得到了这个结果{"0":"{\"mytest\"","1":"\"running\"}","MODE":"development"}。
我肯定错过了一些非常简单的东西。请在下面查看我正在使用的代码。我想我无法将正文转换为数组。
这就是我正在做的:
index.php
require 'Vendor/Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
//Middleware
$app->add(new \Slim\Middleware\TestMiddleware());
// Middleware Test
$app->get(
'/mid',
function () use ($app) {
$response = $app->response();
$response->body(json_encode(array(
'mytest'=>'running'
)));
}
);
TestMiddleware.php
namespace Slim\Middleware;
//Appends mode to the response bpoy
class TestMiddleware extends \Slim\Middleware
{
public function call()
{
$app=$this->app;
$this->next->call();
$res=$app->response;
$body=$res->getBody();
$res->setBody(
json_encode(
array_merge(
explode(":",$body),array(
'MODE'=>'development'
)))
);
}
}
【问题讨论】: