Laravel 5.5+ 프레임워크를 사용하여 404 응답을 더 잘 구현하는 방법

不言
풀어 주다: 2018-09-10 14:48:59
원래의
1999명이 탐색했습니다.

404 페이지를 어떻게 구현하나요? 실제로 많은 방법이 있습니다. 다음으로, 이 기사에서는 Laravel 5.5+ 프레임워크를 사용하여 404 응답을 더 잘 구현하는 방법을 소개합니다. 구체적인 내용을 살펴보겠습니다.

Laravel 5.5.10은 사용자에게 더 나은 404 페이지를 제공하는 데 도움이 되는 두 가지 유용한 라우터 방법을 캡슐화합니다. 이제 404 예외가 발생하면 Laravel은 사용자 UI에 표시하도록 사용자 정의할 수 있는 아름다운 404.blade.php 보기 파일을 표시하지만 이 보기에는 액세스할 수 없습니다. session, cookie, 인증(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이 이 폴백 경로를 렌더링하면 모든 미들웨어가 실행되므로

web.php 경로 파일에서 폴백을 정의하면 라우팅할 때 모든 미들웨어는 web 미들웨어 그룹이 실행되어 session 데이터를 얻을 수 있습니다.

API 인터페이스 설명

이제

/non-existing-page를 클릭하면 View에 정의된 대체 경로가 표시됩니다. /api/non-existing-endpoint을 클릭할 때 이 인터페이스를 제공하지 않으려면 api 대체 경로에서 JSON을 정의하면 됩니다. , api.php 라우팅 파일로 이동하여 다른 대체 경로를 정의합니다.

Route::fallback(function() {
    return response()->json(['message' => 'Not Found!]);
});
로그인 후 복사
api 미들웨어 그룹에는

/api#🎜 🎜#이 포함되어 있습니다. 접두사, /api 접두사가 있는 정의되지 않은 모든 경로는 #🎜 🎜#web.php#🎜 대신 api.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 응답을 더 잘 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿