У меня есть часть промежуточного программного обеспечения в Slim 3, которое проверяет сеанс для каждого маршрута. Если проверка не удалась, она возвращает объект JSON с { 'status' : false, 'error': 'failed validation' }
. Если проверка прошла, она добавляет 'status' : true
к объекту ответа JSON.Добавление статуса в PHP Slim 3 response
Как вставить свойство объекта в ответ $?
$app->add(function($request, $response, $next) {
$valid = doExternalValidation();
if ($valid == false) {
return $response->withJSON(
[ 'status' => false, 'errors' => 'failed validation' ]
);
}
$response = $next($request, $response);
$response->jsonBody['status'] = true; // THIS IS WHAT I WANT TO DO
return $response;
});
$app->get('/test', function ($request, $response, $args) {
$data = [ "foo" => "bar" ];
return $response->withJSON([ 'data' => $data ]);
});
Как я могу изменить функцию промежуточного слоя, так что я получаю { "status" : true, "data" : { "foo" : "bar" } }
?
Вы могли бы сделать что-то подобное в вашей Middleware '$ запросить = $ request-> withAttribute ("статус", правда); $ response = $ next ($ request, $ response); return $ response; ', а затем в вашем обратном вызове' $ status = $ request-> getAttribute ("status"); return $ response-> withJSON (['status' => $ status, 'data' => $ data]); 'или вы можете просто вернуть статус true по умолчанию, если он прошел Middleware –
@DusanJovanov: какой вызов чтобы вернуть статус true по умолчанию в промежуточное ПО? –
Нет, я имел в виду функцию обратного вызова в вашем маршруте, чтобы просто вернуть статус true по умолчанию, как этот '$ app-> get ('/ test', function ($ request, $ response, $ args) { $ data = [" foo "=>" bar "]; return $ response-> withJSON (['status' => true, 'data' => $ data]); });' –