Membetulkan Ralat "Pengawal Kelas Sasaran Tidak Wujud" dalam Laravel 8
Apabila menggunakan Laravel 8, anda mungkin menghadapi ralat berikut: " Kelas sasaran [ApiRegisterController] tidak wujud." Ini berlaku disebabkan oleh perubahan dalam cara Laravel mengendalikan awalan ruang nama dalam kumpulan laluan.
Dalam Laravel 8, sifat $namespace dalam RouteServiceProvider, yang sebelum ini menambahkan awalan pada takrifan laluan pengawal, kini ditetapkan kepada nol oleh lalai. Ini bermakna nama kelas yang layak sepenuhnya mesti digunakan apabila merujuk kepada pengawal dalam laluan.
Untuk menyelesaikan isu ini, anda mempunyai beberapa pilihan:
Menggunakan Nama Kelas Berkelayakan Penuh:
Gunakan nama kelas yang layak sepenuhnya untuk pengawal anda dalam laluan anda. Contohnya:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Menentukan Awalan Ruang Nama dalam Kumpulan Laluan:
Jika anda lebih suka cara lama, anda boleh mentakrifkan awalan ruang nama untuk kumpulan laluan anda dalam RouteServiceProvider. Begini cara untuk melakukannya:
public function boot() { ... Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php')); ... }
Menetapkan $namespace Property:
Semasa menyahkomen sifat $namespace dalam RouteServiceProvider disebut dalam beberapa sumber, ia hanya mempengaruhi penjanaan URL untuk tindakan dan tidak menambah awalan ruang nama pada laluan oleh sendiri.
Kemas kini untuk Laravel 8.0.2 dan Kemudian:
Jika anda telah memasang salinan baharu Laravel 8 sejak versi 8.0.2, anda boleh menyahkomen ahli $namespace yang dilindungi pembolehubah dalam RouteServiceProvider untuk kembali kepada tingkah laku lama.
Ingat, kuncinya adalah untuk tentukan awalan ruang nama untuk kumpulan laluan anda dan bergantung pada keutamaan anda, anda boleh memilih mana-mana kaedah yang dinyatakan di atas untuk membetulkan ralat "Pengawal Kelas Sasaran Tidak Wujud" dalam Laravel 8.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Pengawal Kelas Sasaran Tidak Wujud' dalam Laravel 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!