Использование Laravel 5.2.StartSession Middleware throwing ErrorException
При перемещении по маршруту появляется следующая ошибка.
Argument 1 passed to Illuminate\Session\Middleware\StartSession::addCookieToResponse() must be an instance of Symfony\Component\HttpFoundation\Response, null given, called in /Users/.../vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php on line 72 and defined
То, что я не понимаю, что если запрос сделан через POST
, не ErrorException не отбрасывается и ожидаемый ответ получен.
Я изменил метод App\Exceptions\Handler::handler($request, Exception $e)
на следующее:
public function render($request, Exception $e) {
// If request is being made via AJAX or wants a JSON response.
if ($request->ajax() || $request->wantsJson()) {
// Check to see if 'getStatusCode()' method exists, otherwise use 500.
$status_code = method_exists($e, 'getStatusCode') ? $e->getStatusCode() : 500;
// Send JSON response.
return json($e->getMessage(), $status_code);
}
return parent::render($request, $e);
}
Помощник json()
определяется как:
function json($message, $status = 200, $data = null) {
$output = [
'success' => is_between($status, [200, 299]),
'statusCode' => $status,
'timestamp' => time(),
'message' => $message,
];
if(!is_null($data))
$output['data'] = $data;
return \Illuminate\Support\Facades\Response::json($output, $status);
}
и is_between()
;
function is_between($value, array $range) {
if($value > $range[1])
return false;
if($value < $range[0])
return false;
return true;
}
Я попытался возвращаясь App\Exceptions\Handler::handler($request, Exception $e)
метод назад, чтобы увидеть, если какой-либо из этого может быть причиной вопрос, но я все еще получаю ту же проблему.
Я также пробовал переписывать маршруты, и контроллер с таким же конечным результатом работает, если делается по запросу POST
, в противном случае бросается ErrorException
.
Спасибо за ответ, но я уже видел этот ответ рассеянную вокруг сети, это была одна из первых вещей, которые я пробовал, и это не работает. Как вы можете видеть в помощнике 'json()', он возвращает объект Response, независимо от того, использую ли я метод 'Response :: json ($ message, $ status)' или помощник 'response(), проблема одна и та же. –