یکی از ویژگیهای لاراول طراحی جدید و بهبودیافته برای طراحی صفحات خطا است.
هنگام برنامهنویسی در laravel، در صورت بروز هرگونه خطا، صفحات نمایش خطا به کاربر نمایش داده میشوند. لاراول ۵٫۵ طراحی جدید و بهتری برای نمایش این صفحات ارائه میدهد و علاوه بر آن این امکان در نسخه جدید لاراول وجود دارد که هر کاربر، صفحهای با قالب سفارشی برای هر خطا ایجاد کند.
خطاهای پیشفرض از فایل errors::layout گسترش داده میشوند، برخی تغییرات کوچک به طراحی استایل نمایش خطا با flexbox اضافه شده که پیام را در وسط صفحه نمایش میدهد.
نمایش پیغام خطا در ورژنهای پیشین لاراول:
نمایش پیغام خطا در ورژن جدید لاراول ۵٫۵:
سفارشی کردن صفحات خطا در لاراول ۵٫۵
شما به راحتی میتوانید در دایرکتوری resources/views/errors برای هر خطا یک صفحه سفارشی تولید کنید. این صفحه Error سفارشی با نام فایل blade که در واقع همان شماره خطا است، نامگذاری میشود. به عنوان مثال، اگر بخواهید در لاراول ۵٫۵ یک صفحه سفارشی برای خطای شماره ۵۰۰ ایجاد کنید، باید صفحه resources/views/errors/500.blade.php را برای آن ایجاد کنید.
در داخل این قالب سفارشی بخشهای زیر را میتوانید تنظیم کنید:
1 2 3 4 5 |
@extends('errors::layout') @section('title', 'Error') @section('message', 'Sorry, we are having a temporary problem. We have been alerted and will be rolling out a fix soon') |
منبع فایل errors::layout در داخل فریم ورک وجود دارد و در دسترس شما قرار دارد. شما میتوانید از این فایل منبع استفاده کنید یا در صورت تمایل فایل layout خود را ساخته و آن را گسترش دهید.
لاراول به طور پیشفرض، فایلهای خطای blade.php.404 و blade.php.419 و blade.php.500 و blade.php.503 را در فریم ورک خود قرار داده است.
اگر کنجکاوید که بدانید لاراول چگونه تعیین میکند که کدام صفحه خطا به کاربر نشان داده شود، نگاهی به متد renderHttpException بیندازید.
قسمت اصلی فراخوانی replaceNamespace است که می گوید برای اولین بار در پوشه “resources / views” خود نگاه کنید، سپس به views در داخل فریم ورک برگردید.
1 2 3 4 |
view()->replaceNamespace('errors', [ resource_path('views/errors'), __DIR__.'/views', ]); |
سپس اگر کد موجود باشد، صفحه کد وضعیت را به این صورت برمیگرداند:
1 |
return response()->view("errors::{$status}" |
و نهایتا میتوان مسیر جدید را در فایل “config/views.php” به صورت زیر تنظیم کرد:
1 2 3 4 |
'paths' => [ realpath(base_path('resources/views/new-design')), realpath(base_path('resources/views')), ], |
حالا لاراول به دنبال فایل قالب در “new-design” میگردد، تا در صورت یافتن، آن را اجرا کند. در غیر اینصورت در پوشه “views” از آن استفاده خواهد کرد.