国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Laravel 5.5+ 更好的來實現 404 響應

pepperwang / 2481人閱讀

摘要:所以,現在我們可以使用具有正常頁面和頁腳的應用布局,來替代簡單的視圖,同時還能給用戶顯示一條友好的提示信息。

譯文首發于 使用 Laravel 5.5+ 更好的來實現 404 響應,轉載請注明出處!

Laravel 5.5.10 封裝了兩個有用的路由器方法,可以幫助我們為用戶提供更好的 404 頁面。現在,當拋出 404 異常時,Laravel 會顯示一個漂亮的 404.blade.php 視圖文件,你可以自定義顯示給用戶 UI,但在該視圖中,你無權訪問 sessioncookie,身份驗證(auth)等...

在 laravel 5.5.10 中,我們有一個新的 Route::fallback() 方法,用于定義當沒有其他路由與請求匹配時 Laravel 回退的路由。

Route::fallback(function () {
    return "Sorry" . auth()->user()->name . "! This page does not exist.";
});

所以,現在我們可以使用具有正常頁面和頁腳的應用布局,來替代簡單的 404 視圖,同時還能給用戶顯示一條友好的提示信息。

Route::fallback(function() {
    return response()->view("notFound", [], 404);
});
@extends("layout.app")

@section("content")
    

Sorry! this page doesn"t exist.

@stop

當 Laravel 渲染這個回退(fallback)路由時,會運行所有的中間件,因此當你在 web.php 路由文件中定義了回退路由時,所有處在 web 中間件組的中間件都會被執行,這樣我們就可以獲取 session 數據了。

API 接口說明

現在當你點擊 /non-existing-page 時,你會看到在回退路由中定義的視圖,甚至當你點擊 /api/non-existing-endpoint 時,如果你也不想提供這個接口,你可以到 api 回退路由中定義 JSON 響應,讓我們到 api.php 路由文件中定義另外一個回退路由:

Route::fallback(function() {
    return response()->json(["message" => "Not Found!]);
});

由于 api 中間件組帶有 /api 前綴,所有帶有 /api 前綴的未定義的路由,都會進入到 api.php 路由文件中的回退路由,而不是 web.php 路由文件中所定義的那個。

使用 abort(404) 和 ModelNotFound 異常

當使用 abort(404) 時會拋出一個 NotFoundHttpException,此時處理器會為我們渲染出 404.blade.php 視圖文件,同樣的 ModelNotFoundException 異常也會做同樣的處理,那么我們應該如何如何處理才能在更好的渲染出回退路由的視圖,而不是一個普通的視圖呢?

class Handler extends ExceptionHandler
{
    public function render($request, Exception $exception)
    {
        if ($exception instanceof NotFoundHttpException) {
            return Route::responseWithRoute("fallback");
        }

        if ($exception instanceof ModelNotFoundException) {
            return Route::responseWithRoute("fallback");
        }

        return parent::render($request, $exception);
    }
}

Route::respondWithRoute("fallback") 回去跑名為 fallback 的路由,我們可以像下面這樣為回退路由命名:

Route::fallback(function() {
    return response()->view("notFound", [], 404);
})->name("fallback");

甚至,你還可以為特定的資源指定回退路由:

if ($exception instanceof ModelNotFoundException) {
    return $exception->getModel() == Server::class
                ? Route::respondWithRoute("serverFallback") 
                : Route::respondWithRoute("fallback");
}

現在我們需要在路由文件中定義這個回退路由:

Route::fallback(function(){
    return "We could not find this server, there are other ". auth()->user()->servers()->count() . " under your account ......";
})->name("serverFallback");
原文

Better 404 responses using Laravel 5.5+

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29379.html

相關文章

  • Laravel 5.5 官方推薦 Nginx 配置學習

    摘要:表示該頁面可以在相同域名頁面的中展示。表示允許過濾器,指示瀏覽器在檢測到攻擊后禁止加載整個頁面。該文件也確實沒有必要記錄到日志中,而且大部分網站并不存在文件。 Laravel 5.5 版本官方放出了 Nginx 服務器的配置,中文文檔:服務器配置 Nginx server { listen 80; server_name example.com; root /e...

    mating 評論0 收藏0
  • Laravel 5.5 官方推薦 Nginx 配置學習

    摘要:表示該頁面可以在相同域名頁面的中展示。表示允許過濾器,指示瀏覽器在檢測到攻擊后禁止加載整個頁面。該文件也確實沒有必要記錄到日志中,而且大部分網站并不存在文件。 Laravel 5.5 版本官方放出了 Nginx 服務器的配置,中文文檔:服務器配置 Nginx server { listen 80; server_name example.com; root /e...

    v1 評論0 收藏0
  • PHP / Laravel API 開發推薦閱讀清單

    showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區優秀文章 Laravel 5.5+passport 放棄 dingo 開發 API 實戰,讓 API 開發更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項目中使用 - API 文檔撰寫方案 推薦 Laravel API 項目必須使用的 8 個...

    shmily 評論0 收藏0
  • 使用docker搭建laravel開發環境

    摘要:已經集成需要使用的環境,只需要簡單修改配置就能搭建環境提供開發,對開發及管理來說真是一味良方。目前能正常訪問文件。 為何用docker? 在電腦還是window系統的時候,經常需要基于vm服務搭建一套環境才能更好地(應該是更貼近線上環境)進行開發,而現在在docker的神秘光環底下已經能實現用最小的資源搭建本地開發環境,同時能更好地遷移到其他地方。 前置知識 了解docker安裝及使...

    fish 評論0 收藏0
  • 使用docker搭建laravel開發環境

    摘要:已經集成需要使用的環境,只需要簡單修改配置就能搭建環境提供開發,對開發及管理來說真是一味良方。目前能正常訪問文件。 為何用docker? 在電腦還是window系統的時候,經常需要基于vm服務搭建一套環境才能更好地(應該是更貼近線上環境)進行開發,而現在在docker的神秘光環底下已經能實現用最小的資源搭建本地開發環境,同時能更好地遷移到其他地方。 前置知識 了解docker安裝及使...

    JouyPub 評論0 收藏0

發表評論

0條評論

pepperwang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<