Sebagai pembangun Laravel, kami sering menghadapi pelbagai ralat. Ada yang disebabkan oleh ralat pengekodan, manakala yang lain disebabkan oleh input pengguna yang salah atau operasi yang tidak betul. Apabila ralat ini berlaku, mekanisme pengendalian ralat yang baik dan halaman ralat amat penting.
Artikel ini akan memperkenalkan mekanisme pengendalian ralat dalam Laravel dan cara menyesuaikan halaman ralat dan lompatan. Kami akan menggunakan Laravel 8 sebagai contoh.
Dalam Laravel, semua pengecualian akan dilemparkan kepada pengendali pengecualian. Pengendali ini bertanggungjawab untuk menentukan cara bertindak balas terhadap pengecualian ini. Laravel menyediakan kelas AppExceptionsHandler
secara lalai untuk mengendalikan semua pengecualian.
Jika anda ingin menyesuaikan respons pengecualian, anda boleh mengeditnya terus dalam kelas Handler
. Sebagai contoh, anda boleh menyesuaikan respons pengecualian melalui kaedah render
:
public function render($request, Throwable $exception) { if ($exception instanceof ModelNotFoundException) { return response()->json([ 'message' => 'Record not found' ], 404); } return parent::render($request, $exception); }
Kod di atas menunjukkan cara untuk bertindak balas apabila model tidak ditemui. Di sini kami menggunakan response()->json
untuk mengembalikan respons ralat dalam format JSON. Jika anda ingin mengembalikan paparan, anda boleh menggunakan fungsi view()
pembantu.
Selain pengendali pengecualian, kami juga perlu menyesuaikan halaman ralat HTTP. Laravel menjadikan proses ini sangat mudah. Kita hanya perlu mencipta paparan yang sepadan di bawah direktori resources/views/errors
. Contohnya:
resources/views/errors/404.blade.php
akan mengendalikan ralat HTTP 404 resources/views/errors/500.blade.php
akan mengendalikan ralat HTTP 500 Perhatikan bahawa anda masih perlu mengkonfigurasi pandangan ini Buat pelarasan pengindahan dan penggayaan. Di sini kami hanya memberikan respons yang paling asas.
Adalah penting untuk ambil perhatian bahawa jika aplikasi anda berjalan dalam mod pengeluaran dan data sampel belum disediakan, maka anda mungkin perlu mengubah suai APP_DEBUG
pembolehubah persekitaran untuk melumpuhkan mod nyahpepijat dan memastikan bahawa caching didayakan.
Selain respons ralat tersuai, kami juga boleh menyesuaikan ubah hala dalam aplikasi. Situasi ubah hala yang paling biasa ialah apabila pengguna tidak disahkan dan kami perlu mengubah hala mereka ke halaman log masuk. Dalam Laravel, gunakan middleware
untuk melindungi laluan, kaedah pengawal, dsb.
Sebagai contoh, kita boleh menggunakan auth
middleware untuk melindungi laluan dashboard
:
Route::get('/dashboard', function () { // })->middleware(['auth']);
Apabila pengguna tidak disahkan, Laravel akan mengubah hala pengguna secara automatik ke login
route , yang merupakan fungsi perisian tengah kebenaran terbina dalam Laravel. Jika anda ingin menyesuaikan ubah hala anda, anda boleh menggunakan RedirectIfAuthenticated
middleware, yang boleh mengubah hala pengguna ke halaman tertentu apabila mereka sudah log masuk.
Contohnya, untuk mengubah hala pengguna log masuk dari halaman /login
ke /dashboard
:
public function handle($request, Closure $next) { if (Auth::check()) { return redirect('/dashboard'); } return $next($request); }
Ini adalah cara untuk mengendalikan ralat dan ubah hala tersuai dalam Laravel. Halaman ralat tersuai dan ubah hala pasti boleh meningkatkan pengalaman pengguna aplikasi anda dan meningkatkan kebolehcapaian aplikasi anda. Sudah tentu, seperti yang kami katakan, apabila menghadapi ralat yang tidak diketahui, kami juga harus memberikan gesaan ralat mesra untuk membantu pengguna menentukan cara menyelesaikan masalah tersebut.
Atas ialah kandungan terperinci lompat ralat laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!