Kelas target [Api \ UserController] tidak ada

Nov 24 2020

Saya mendapatkan kesalahan ini di Laravel 8 setelah menggunakan php artisan route: list:

Illuminate \ Contracts \ Container \ BindingResolutionException Kelas target [Api \ UserController] tidak ada.

Saya memiliki pengontrol di App \ Http \ Controllers \ Api:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all(); return responde()->json($users);
    }
}

rute / api.php:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', 'Api\\UserController@index');

Saya baru di Laravel

Jawaban

3 Donkarnash Nov 24 2020 at 06:45

Karena Anda mengimpor use App\Http\Controllers\Api\UserControllerpernyataan namespace, Anda dapat menggunakan ::classnotasi untuk kelas kontroler. Ini juga akan memiliki manfaat tambahan karena IDE akan dapat menavigasi ke jalur tidak seperti string

Sejak Laravel 8, saya kira namespace default tidak lagi didefinisikan App\Http\Controllersdi RouteServiceProvider, melainkan diserahkan kepada pengembang untuk menentukan namespace default dengan menyetel properti $ namespace dengan nilai yang diinginkan.

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', [UserController::class, 'index']);
MuditGulgulia Nov 24 2020 at 12:33

Di Larvel 8 Anda tidak dapat mengatur rute seperti dulu, sintaks berikutnya adalah ini

Pengontrol:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
user App\Models\User;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all(); return responde()->json($users);
    }
}

api.php:

<?php

use Illuminate\Support\Facades\Route;

Route::get('users', '\App\Http\Controllers\Api\UserController@index');

Atau

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('/Pages', [UserController::class, 'index']);

Dokumen untuk perutean