旗下导航:搜·么
当前位置:网站首页 > PHP框架 > Laravel > 正文

如何用Laravel 5.5+框架更好的来完成404相应【laravel框架】,Laravel 5.5+框架,404响应

作者:搜搜PHP网发布时间:2019-11-29分类:Laravel浏览:115


导读:怎样完成404页面?要领其实有很多种,接下来本篇文章就给人人引见怎样用Laravel5.5+框架更好的来完成404相应,话不多说,让我们来看一看细致的内容。Laravel...

怎样完成404页面?要领其实有很多种,接下来本篇文章就给人人引见怎样用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')
    <h3>Sorry! this page doesn't exist.</h3>
@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');

相干引荐:

mac mamp ngiux laravel框架 报404毛病

怎样完成Laravel 5.5可相应接口

以上就是怎样用Laravel 5.5+框架更好的来完成404相应的细致内容,更多请关注ki4网别的相干文章!

标签:Laravel 5.5+框架404响应