Apabila menggunakan Laravel 8, anda mungkin menghadapi ralat "Kelas sasaran [kelas pengawal] tidak wujud" semasa cuba mengakses pengawal tertentu. Ralat ini berpunca daripada pengenalan gelagat penghalaan baharu dalam Laravel 8.
Dalam versi Laravel sebelumnya, kumpulan laluan mempunyai awalan ruang nama automatik yang digunakan pada pengawalnya. Walau bagaimanapun, dalam Laravel 8, tingkah laku ini telah dialih keluar secara lalai. Ini bermakna pengawal mesti dirujuk menggunakan nama kelas mereka yang layak sepenuhnya (termasuk ruang nama) dalam laluan anda.
Untuk menyelesaikan ralat ini, anda mempunyai beberapa pilihan:
Gunakan Nama Kelas Berkelayakan Penuh: Rujuk kepada pengawal menggunakan nama kelas lengkap mereka, termasuk ruang nama. Contohnya:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Tambah Awalan Ruang Nama pada Laluan: Tambah awalan ruang nama pada kumpulan laluan anda secara manual. Dalam RouteServiceProvider anda, tambahkan yang berikut:
Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php'));
Dengan melaraskan sintaks penghalaan anda mengikut tingkah laku baharu dalam Laravel 8, anda boleh menghapuskan "Pengawal kelas sasaran tidak wujud" ralat. Gunakan pendekatan yang paling sesuai dengan keperluan projek anda dan ingat untuk merujuk kepada dokumentasi Laravel rasmi untuk mendapatkan maklumat yang lebih terperinci.
Atas ialah kandungan terperinci Laravel 8: Mengapa Saya Mendapat Ralat 'Pengawal Kelas Sasaran Tidak Wujud' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!