Поскольку это всего лишь JSON, а laravel поддерживает резонансы JSON из коробки, единственное, что вам нужно сделать, это вернуть массив с вашими данными:
Route::get("/test", function() {
$response = ["email" => ["The email field is required."]];
return [
"readyState" => 4,
"responseText" => json_encode($response),
"responseJSON" => $response,
"status" => 422,
"statusText" => "Unprocessable Entity"
];
});
Laravel возвращает каждый массив в виде JSON и добавляет заголовок Content-Type: application/json
к HTTP-запросу.
В приведенном выше примере вы получите именно вашу строку: {"readyState":4,"responseText":"{\"email\":[\"The email field is required.\"]}","responseJSON":{"email":["The email field is required."]},"status":422,"statusText":"Unprocessable Entity"}
EDIT:
Для установки кода состояния вы можете использовать response()->json()
примерно так:
Route::get("/test", function() {
$response = ["email" => ["The email field is required."]];
return response()->json($response, 422);
});
response()
возвращает экземпляр Illuminate\Routing\ResponseFactory
, чтобы вы могли искать возможные параметры: function json($data = [], $status = 200, array $headers = [], $options = 0)