使用Laravel 5.2。StartSession中间件抛出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 :: json($ message,$ status)方法还是'response()'帮助器,它都返回一个Response对象,问题是相同。 –