本文實(shí)例講述了Laravel5框架自定義錯(cuò)誤頁面配置操作。分享給大家供大家參考,具體如下:
♩ 背景
- 最近試著學(xué)習(xí) laravel 5.5,使用 composer 下載新的框架源代碼
composer create-project --prefer-dist laravel/laravel lar5Pro 5.5.*
- 發(fā)現(xiàn)在輸入錯(cuò)誤的鏈接時(shí),會(huì)有如下的提示信息:
- 想到,一般成型的網(wǎng)站都會(huì)自定義404、501、503等頁面,所以通過網(wǎng)上搜索方法,進(jìn)行測(cè)試,可推薦如下的實(shí)現(xiàn)過程 …
框架: Laravel 5.5
♪ 操作
①. 解釋
- 所有異常錯(cuò)誤都由類 App\Exceptions\Handler 處理,該類包含兩個(gè)方法:
report
和 render
,其中的 render
方法會(huì)將異常渲染到 HTTP 響應(yīng)中
②. render 方法優(yōu)化
- 參考了網(wǎng)上的相關(guān)介紹,發(fā)現(xiàn)可以將 App\Exceptions\Handler 中的 render 方法修改為下面的樣子:
public function render($request, Exception $exception)
{
/* 錯(cuò)誤頁面 */
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);
}
【分析】
經(jīng)過對(duì)框架源碼的查看發(fā)現(xiàn),我們是通過實(shí)例化 FlattenException
類來獲得請(qǐng)求狀態(tài)碼的,根據(jù)提供的測(cè)試類 FlattenExceptionTest
,從而得出了上述的代碼,建議可以閱讀下源代碼以做比較
③. 創(chuàng)建 view 頁面
- 在
resources/views/error/
目錄下創(chuàng)建錯(cuò)誤頁面
- 命名格式為 {error.code}.blade.php
④. 訪問測(cè)試
- 舉例來講,在
404.blade.php
中編輯設(shè)計(jì)自己的 404頁面
- 通過訪問一個(gè)不存在的路由,以本人為例,顯示效果如下:
- 默認(rèn)如果數(shù)據(jù)處理有錯(cuò),是 500 異常報(bào)錯(cuò),此時(shí)可以通過 debug 查看并進(jìn)行排錯(cuò)處理…
♫ 附錄
- 根據(jù)上面的操作,可擴(kuò)展創(chuàng)建其他錯(cuò)誤頁面
- 此處附錄一下
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('/') }}" rel="external nofollow" >首頁/a>/p>
p class="hint">非常抱歉 - 您可能輸入了錯(cuò)誤的網(wǎng)址,或者該網(wǎng)頁已刪除或移動(dòng)/p>
/div>
/body>
/html>
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- Laravel如何友好的修改.env配置文件詳解
- Nginx中運(yùn)行PHP框架Laravel的配置文件分享
- Laravel框架環(huán)境與配置操作實(shí)例分析
- Laravel 前端資源配置教程
- laravel config文件配置全局變量的例子
- Laravel數(shù)據(jù)庫讀寫分離配置的方法
- Laravel 數(shù)據(jù)庫加密及數(shù)據(jù)庫表前綴配置方法
- laravel框架數(shù)據(jù)庫配置及操作數(shù)據(jù)庫示例
- laravel-admin自動(dòng)生成模塊,及相關(guān)基礎(chǔ)配置方法
- laravel 配置路由 api和web定義的路由的區(qū)別詳解
- Laravel5.6框架使用CKEditor5相關(guān)配置詳解
- Laravel配置全局公共函數(shù)的方法步驟
- laravel配置Redis多個(gè)庫的實(shí)現(xiàn)方法
- nginx實(shí)現(xiàn)一個(gè)域名配置多個(gè)laravel項(xiàng)目的方法示例
- laravel 框架配置404等異常頁面
- Laravel 5.5官方推薦的Nginx配置學(xué)習(xí)教程
- Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析
- Laravel 5+ .env環(huán)境配置文件詳解