Ich habe ein Stück Middleware in Slim 3, die eine Sitzung für jede Route validiert. Wenn die Validierung fehlschlägt, wird ein JSON-Objekt mit { 'status' : false, 'error': 'failed validation' }
zurückgegeben. Wenn die Validierung erfolgreich ist, fügt sie dem Antwort-JSON-Objekt 'status' : true
hinzu.Hinzufügen eines Status zu PHP Slim 3 Antwort
Wie füge ich eine Objekteigenschaft in die $ Antwort ein?
$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 ]);
});
Wie kann ich die Middleware-Funktion verändern, so dass ich { "status" : true, "data" : { "foo" : "bar" } }
bekommen?
Sie könnten etwas tun, wie dies in der Middleware '$ anfordern = $ request-> withAttribute ("status", true); $ response = $ next ($ Anfrage, $ Antwort); return $ response; 'und dann in Ihrem Route-Callback' $ status = $ request-> getAttribute ("status"); return $ response-> withJSON (['status' => $ status, 'data' => $ data]); 'oder Sie könnten einfach den Status true zurückgeben, wenn die Middleware –
@DusanJovanov: What's the call bestanden hat um den Status in der Middleware standardmäßig als "true" zurückzusetzen? –
Nein, ich habe in Ihrer Route Callback-Funktion gemeint, um standardmäßig den Status 'true' zurückzuliefern wie $ app-> get ('/ test', Funktion ($ request, $ response, $ args)) { $ data = ["foo "=>" bar "]; return $ response-> withJSON (['status' => true, 'daten' => $ data]); });' –