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
Patricia Arquetteasal
2024-12-29 18:17:10917semak imbas

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');

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

  • 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!

Kenyataan:
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