Dalam beberapa tahun kebelakangan ini, Laravel telah menjadi salah satu rangka kerja MVC yang paling popular dalam komuniti PHP Keanggunan dan kebolehskalaannya menjadikannya pilihan pertama banyak pembangun web. Walau bagaimanapun, dokumentasi Laravel tidak begitu lengkap, dan kadangkala kami masih menghadapi beberapa masalah pelik semasa proses pembangunan. Antaranya, masalah yang paling biasa ialah "laluan tidak dijumpai".
Sistem penghalaan Laravel direka untuk memetakan permintaan URI kepada tindakan tertentu dalam kod anda. Laluan boleh ditakrifkan dalam fail web.php atau dalam fail api.php. Dalam fail ini, kami boleh menentukan pemetaan antara URI yang berbeza dan kaedah permintaan. Kami juga boleh menentukan kaedah pengawal untuk laluan supaya permintaan dalam laluan diproses dalam pengawal.
Walau bagaimanapun, apabila kami mengakses laluan tertentu dalam penyemak imbas, kami mungkin menghadapi ralat "404 Not Found". Ini biasanya bermakna Laravel tidak dapat mencari laluan ini. Dalam artikel ini, kami akan meneroka beberapa kemungkinan sebab Laravel tidak dapat mencari laluan dan menyediakan penyelesaian.
Masalah 1: Ralat URI
Anda hendaklah terlebih dahulu mengesahkan sama ada URI itu betul. Kadangkala kami menulis laluan dengan tangan dan membuat beberapa kesilapan semasa menulis URI, seperti salah ejaan atau huruf besar yang salah. Dalam kes ini, Laravel tidak akan dapat mencari laluan dan mengembalikan ralat 404. Kita boleh menyelesaikan masalah ini dengan menyemak jadual penghalaan atau menggunakan nama laluan. Sebagai contoh, jika laluan berikut ditakrifkan:
Route::get('/users', 'UserController@index')->name('users.index');
kita boleh menjana URI laluan dengan:
route('users.index');
Ini akan menjana URI untuk /users tanpa perlu menulis secara manual URI. Ini mengelakkan kesilapan kesilapan yang disebabkan oleh URI tulisan tangan.
Masalah 2: Caching laluan
Laravel menyediakan alat baris arahan yang boleh cache jadual penghalaan seperti composer.json, yang boleh mempercepatkan permulaan. Walau bagaimanapun, jika kami menambah atau mengedit laluan dalam fail web.php atau api.php dan menggunakan cache laluan, perubahan tersebut tidak akan berkuat kuasa. Kita perlu mengosongkan cache laluan dan menjana semula cache laluan. Cache laluan boleh dikosongkan dengan arahan berikut:
php artisan route:clear
dan kemudian dijana semula:
php artisan route:cache
Walau bagaimanapun, cache laluan tidak boleh digunakan jika aplikasi bergantung pada laluan atau laluan dinamik parameter . Dalam kes ini, kita hanya boleh mengosongkan cache menggunakan laluan: clear.
Masalah 3: Ralat ruang nama
Ralat ruang nama juga boleh menyebabkan Laravel tidak menemui laluan. Ini biasanya berlaku apabila pengawal kami berada dalam struktur direktori bersarang. Kita perlu memastikan ruang nama yang betul dinyatakan dalam laluan. Sebagai contoh, jika kita mempunyai struktur direktori berikut:
app/ Http/ Controllers/ Admin/ UserController.php
Pada masa yang sama, kami menentukan ruang nama dalam pengawal:
namespace App\Http\Controllers\Admin;
Apabila menentukan laluan, kita perlu gunakan nama kelas pengawal yang lengkap atau gunakan kaedah sebagai untuk menentukan ruang nama pengawal. Contohnya:
Route::get('/users', 'App\Http\Controllers\Admin\UserController@index');
Atau gunakan kaedah sebagai:
Route::namespace('Admin')->group(function () { Route::get('/users', 'UserController@index')->name('users.index'); });
Melakukan ini akan memastikan laluan kami menggunakan ruang nama yang betul.
Soalan 4: Kemas kini kebergantungan komposer
Mungkin versi Laravel kami telah dikemas kini, tetapi kami tidak mengemas kini kebergantungan komposer. Ini boleh menyebabkan kelas tertentu gagal dimuatkan, menyebabkan ralat laluan tidak ditemui. Kami boleh mengemas kini kebergantungan kami dengan menjalankan arahan berikut dalam terminal:
composer update
Ini akan mengemas kini kebergantungan kami dan menyelesaikan isu laluan tidak ditemui.
Isu 5: Ralat Konfigurasi
Kedua-dua Laravel dan PHP sendiri mempunyai banyak pilihan konfigurasi. Jika konfigurasi kami salah, ia mungkin menyebabkan Laravel tidak menemui laluan. Dalam kes ini, kita boleh menyemak sama ada fail konfigurasi dalam folder konfigurasi adalah betul. Contohnya, jika pemacu Seesion kami dikonfigurasikan untuk menggunakan storan Pangkalan Data, kami perlu memastikan sambungan dikonfigurasikan dengan betul. Kita boleh menemui konfigurasi berikut dalam fail config/session.php:
'driver' => 'database', // ... 'connection' => null,
Pada ketika ini anda harus memastikan bahawa pilihan konfigurasi pangkalan data adalah betul dan sepadan dengan nama sambungan.
Kesimpulan
Semasa proses pembangunan Laravel, anda mungkin menghadapi ralat yang laluan tidak dapat ditemui. Biasanya, ralat ini disebabkan oleh ralat URI atau ruang nama, cache laluan, kebergantungan komposer atau ralat konfigurasi. Dengan menyemak isu biasa ini dan menggunakan penyelesaian yang sesuai, kami boleh membetulkan isu penghalaan dengan mudah dan terus membangun dengan cekap.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika laravel tidak dapat mencari laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!