2015-01-11 101 views
3

我正在使用Laravel 5,我試圖自定義404頁面和自定義異常處理,但我無法弄清楚我的代碼放在哪裏。前段時間有一個ErrorServiceProvider不再存在。任何人都可以給我一些指點嗎?Laravel 5錯誤處理

編輯:我看到他們已經在應用程序/例外文件夾中添加了一個Handler類,但仍然看起來不是正確的地方,因爲它不遵循所有的laravel 4.2 App :: error,App :: missing和App :: fatal方法。任何人有任何想法?

+0

你需要把它們放在你的globals.php http://laravel.com/docs/4.2/errors#handling-errors – astroanu

+0

也就是說laravel 4.2,我的問題是新的laravel 5 –

+0

是的。 Taylor在其中添加了Handler類的Exception文件夾,這可以在Laravel 5中完成。預計在接下來的幾天內會正式發佈。 –

回答

1

使用app/Exceptions/Handler.php渲染方法來實現這一點。 L5文檔http://laravel.com/docs/5.0/errors#handling-errors

public function render($request, Exception $e) 
{ 
    if ($e instanceof Error) { 
     if ($request->ajax()) { 
      return response(['error' => $e->getMessage()], 400); 
     } else { 
      return $e->getMessage(); 
     } 
    } 

    if ($this->isHttpException($e)) { 
     return $this->renderHttpException($e); 
    } else { 
     return parent::render($request, $e); 
    } 
} 
1

這裏是如何進行自定義錯誤頁,而與APP_DEBUG設置在.env規定。

應用程序/例外/ Handler.php

public function render($request, Exception $e) 
{ 
    if ($this->isHttpException($e)) 
    { 
     return $this->renderHttpException($e); 
    } 
    else 
    { 
     if (env('APP_DEBUG')) 
     { 
      return parent::render($request, $e); 
     } 
     return response()->view('errors.500', [], 500); 
    } 
} 
+0

我覺得返回一個響應比它更好,例如: 'return response() - > view('errors.500',[],500);' 如果你願意,創建一個自定義視圖給所有人錯誤。 –

+0

@RodolphoFreire我同意。答覆更新,謝謝。 – unliu