Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Laravel 8 Melemparkan Ralat 'Pengawal Kelas Sasaran Tidak Wujud' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Laravel 8 Melemparkan Ralat 'Pengawal Kelas Sasaran Tidak Wujud' dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-29 18:17:10
asal
893 orang telah melayarinya

Why Does Laravel 8 Throw a

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');
Salin selepas log masuk

Penyelesaian 2: Awalan Ruang Nama

Sebagai alternatif, anda boleh mendayakan semula awalan ruang nama dengan mengubah suai RouteServiceProvider:

protected $namespace = 'App\Http\Controllers';
Salin selepas log masuk

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');
});
Salin selepas log masuk

Tambahan Nota

  • Penyelesaian pilihan adalah menggunakan nama kelas yang layak sepenuhnya kerana ia memberikan kejelasan dan kawalan yang lebih jelas ke atas ruang nama.
  • Jika anda lebih suka menggunakan awalan ruang nama, ia adalah disyorkan untuk menetapkan sifat $namespace dalam RouteServiceProvider secara eksplisit untuk memastikan konsisten tingkah laku.
  • Sila ambil perhatian bahawa RouteServiceProvider dan sifat $namespacenya tidak mempunyai kesan pada penjanaan URL kepada tindakan, hanya pada penghalaan kepada pengawal.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan