尝试并且没有$ id的Catch laravel

时间:2017-10-10 13:53:56

标签: php laravel try-catch

大家,几天前,我在一个传递$ id的函数中询问了Try和Catch的可能解决方案,但现在,我遇到了类似的问题,现在,我不需要传递任何$ id ,只是一个视图,视图有一个文件(PDF),从我的应用程序的管理面板上传,我尝试了一些管理员删除文件(PDF)和用户尝试访问条款和条件的页面,没有任何PDF上传后,系统重定向到其他页面,如家;这是我的代码:

    public function terms()
  {
    try {
      $terms = Multimedia::where('multimedia_type', 'terms')->first();
      return view('terms.terms', compact('terms'));
    } catch (\Exception $e) {
        return redirect('/')->with('errors', 'Ha ocurrido un errror, lo sentimos');
    }
  }

但是,当我删除文件时,我收到了这个错误:

  

(2/2)ErrorException   试图获取非对象的属性(查看:/home/vagrant/Code/Biblio/resources/views/terms/terms.blade.php)

系统没有重定向到其他页面。如果有人可以提供帮助,我将非常感激

1 个答案:

答案 0 :(得分:1)

错误来自Blade模板。在这种文件不存在的情况下,它将在try catch之外中断。 PHP假设您将null传递给模板。

要处理此问题,您可以执行以下操作:

if($terms) {
    return view('terms.terms', compact('terms'));
} else {
    return redirect('/')->with('errors', 'Ha ocurrido un errror, lo sentimos');
}

注意,您可以在try catch之外执行此操作,并且在函数中只需声明$terms,就像您已经拥有的那样。