Laravel5下自定義錯誤頁面的配置
阿新 • • 發佈:2019-01-09
♩ 背景
- 最近試著學習 laravel 5.5,使用 composer 下載新的框架原始碼
composer create-project --prefer-dist laravel/laravel lar5Pro 5.5.*
- 發現在輸入錯誤的連結時,會有如下的提示資訊:
- 想到,一般成型的網站都會自定義404、501、503等頁面,所以通過網上搜索方法,進行測試,可推薦如下的實現過程 …
框架: Laravel 5.5
♪ 操作
①. 解釋
- 所有異常錯誤都由類 App\Exceptions\Handler 處理,該類包含兩個方法:
report
render
,其中的render
方法會將異常渲染到 HTTP 響應中
②. render 方法優化
- 參考了網上的相關介紹,發現可以將 App\Exceptions\Handler 中的 render 方法修改為下面的樣子:
public function render($request, Exception $exception)
{
/* 錯誤頁面 */
if ($exception) {
//TODO Laravel5.5 框架中 Exception 類不存在 getStatusCode()方法,或許只能支援前面的版本!
//$code = $exception->getStatusCode();
$code = FlattenException::create($exception)->getStatusCode();
return response()->view('error.' . $code, [], $code);
}
return parent::render($request, $exception);
}
【分析】
經過對框架原始碼的檢視發現,我們是通過例項化
FlattenException
類來獲得請求狀態碼的,根據提供的測試類FlattenExceptionTest
,從而得出了上述的程式碼,建議可以閱讀下原始碼以做比較
③. 建立 view 頁面
- 在
resources/views/error/
目錄下建立錯誤頁面 - 命名格式為 {error.code}.blade.php
④. 訪問測試
- 舉例來講,在
404.blade.php
中編輯設計自己的 404頁面 - 通過訪問一個不存在的路由,以本人為例,顯示效果如下:
- 預設如果資料處理有錯,是 500 異常報錯,此時可以通過 debug 檢視並進行排錯處理…
♫ 附錄
- 根據上面的操作,可擴充套件建立其他錯誤頁面
- 此處附錄一下
404.blade.php
原始碼,僅做參考
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404頁面</title>
<style>
#box{
margin: 0 auto;
width: 540px;
height: 540px;
}
p{
margin-bottom: 60px;
width: 540px;
height: 20px;
text-align: center;
line-height: 20px;
}
#mes{
font-size: 30px;
color: red;
}
.hint{
color: #999;
}
a{
color: #259AEA;
text-decoration:none
}
</style>
<script>
var i = 5;
var intervalID = setInterval("fun()", 1000);
function fun() {
if (i == 0) {
window.location.href = "/";
clearInterval(intervalID);
}
document.getElementById("mes").innerHTML = i;
i--;
}
</script>
</head>
<body>
<div id="box">
<img src="{{ asset('images/error/404.jpg') }}" alt="404">
<p>將在 <span id="mes">5</span> 秒鐘後返回 <a href="{{ url('/') }}">首頁</a></p>
<p class="hint">非常抱歉 - 您可能輸入了錯誤的網址,或者該網頁已刪除或移動</p>
</div>
</body>
</html>