Ralat: "Pengawal Kelas Sasaran Tidak Wujud" dalam Laravel 8
Apabila menggunakan Laravel 8, anda mungkin menghadapi ralat menyatakan "Sasaran kelas [ApiRegisterController] tidak wujud" walaupun mempunyai kelas di lokasi yang betul. Ralat ini berpunca daripada perubahan dalam pengendalian ruang nama dalam Laravel 8.
Sebelum ini, pengawal telah didahulukan secara automatik dengan ruang nama yang ditakrifkan dalam RouteServiceProvider. Walau bagaimanapun, dalam Laravel 8, awalan ini tidak lagi digunakan secara lalai. Akibatnya, anda mesti mentakrifkan secara eksplisit nama kelas yang layak sepenuhnya bagi pengawal anda apabila merujuk mereka dalam laluan.
Penyelesaian 1: Nama Kelas Berkelayakan Penuh
Untuk menyelesaikan masalah ini isu, gantikan rujukan pengawal dalam laluan anda dengan kelas yang layak sepenuhnya nama:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Penyelesaian 2: Awalan Ruang Nama
Sebagai alternatif, anda boleh mendayakan semula awalan ruang nama dengan mengubah suai RouteServiceProvider:
protected $namespace = 'App\Http\Controllers';
Ini akan mengawal semua pengawal yang dirujuk dalam laluan dengan Ruang nama AppHttpControllers.
Penyelesaian 3: Gunakan Kumpulan Ruang Nama
Dalam fail laluan api.php, anda boleh mentakrifkan kumpulan ruang nama untuk menggunakan ruang nama pada laluan tertentu:
Route::group(['namespace' => 'Api'], function () { Route::get('register', 'RegisterController@register'); });
Tambahan Nota
Atas ialah kandungan terperinci Mengapa Laravel 8 Melemparkan Ralat 'Pengawal Kelas Sasaran Tidak Wujud' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!