正确处理laravel控制器中的错误消息

时间:2019-02-21 16:43:47

标签: php laravel

我目前可以在一行代码中进行尝试/捕获,但是当它出错时,它不能正确地打印出错误。当前:

try
{
    // code here
}
catch (\Exception $e)
{
    return Redirect::back()
              ->withErrors($e->getResponse()->getBody()->getContents()["message"]);
}

打印:

  

{

现在,如果我使用:

return Redirect::back()->withErrors($e->getResponse()->getBody()->getContents());

然后我得到:

  

{“消息”:用户不存在}

如何将其更改为出现错误时仅显示“用户不存在”?

2 个答案:

答案 0 :(得分:3)

您需要解码json字符串,以便可以访问message属性。

try {
    //code here
}catch (\Exception $e) {
    $response = json_decode($e->getResponse()->getBody()->getContents());
    $message = $response->message;

    return Redirect::back()->withErrors($message);
}

答案 1 :(得分:1)

您正在尝试通过数组访问来访问序列化的JSON字符串。这显然将失败。这里是1:1的解决方案,其中包括JSON解码。

try
{
    // code here
}
catch (\Exception $e)
{
    return (json_decode(Redirect::back()
              ->withErrors($e->getResponse()->getBody()->getContents()))->message;
}