我正在移动到laravel 5,并且在HTML页面中收到来自laravel的错误。如下所示:
Sorry, the page you are looking for could not be found.
1/1
NotFoundHttpException in Application.php line 756:
Persona no existe
in Application.php line 756
at Application->abort('404', 'Person doesnt exists', array()) in helpers.php line
当我使用laravel 4时,一切正常,错误是json格式的,这样我就可以解析错误消息并向用户显示一条消息。json错误的一个例子:
{"error":{
"type":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"message":"Person doesnt exist",
"file":"C:\\xampp\\htdocs\\backend1\\bootstrap\\compiled.php",
"line":768}}
我如何在laravel 5中实现这一点。
很抱歉我的英语不好,非常感谢。
发布于 2015-08-16 21:41:09
我之前在这里寻找如何在Laravel中的任何地方抛出json异常,答案让我走上了正确的道路。对于任何在搜索类似解决方案时发现这一点的人来说,我是如何在整个应用程序中实现的:
将此代码添加到
方法
if ($request->ajax() || $request->wantsJson()) {
return new JsonResponse($e->getMessage(), 422);
}
将此代码添加到处理对象的方法中:
if ($request->ajax() || $request->wantsJson()) {
$message = $e->getMessage();
if (is_object($message)) { $message = $message->toArray(); }
return new JsonResponse($message, 422);
}
然后在你想要的任何地方使用这段通用的代码:
throw new \Exception("Custom error message", 422);
它会将ajax请求之后抛出的所有错误转换为Json异常,准备好以任何您想要的方式使用:-)
发布于 2016-02-04 07:00:51
Laravel 5.1
为了将HTTP状态码保存在意外异常中,比如404,500,403...
这是我使用的(
app/Exceptions/Handler.php
):
public function render($request, Exception $e)
{
$error = $this->convertExceptionToResponse($e);
$response = [];
if($error->getStatusCode() == 500) {
$response['error'] = $e->getMessage();
if(Config::get('app.debug')) {
$response['trace'] = $e->getTraceAsString();
$response['code'] = $e->getCode();
}
}
return response()->json($response, $error->getStatusCode());
}
发布于 2015-04-02 22:15:09
Laravel 5在
..。The The The
方法可以用来以不同的方式呈现特定的异常,即
public function render($request, Exception $e)
{
if ($e instanceof API\APIError)
return \Response::json(['code' => '...', 'msg' => '...']);
return parent::render($request, $e);
}
就我个人而言,我使用
当我想要返回一个API错误时抛出一个通用的异常。相反,您可以只检查请求是否为AJAX (
),但我认为显式设置API异常看起来更清晰,因为您可以扩展
类并添加所需的任何函数。
https://stackoverflow.com/questions/28444556
复制相似问题