Hedef sınıf [Api \ UserController] mevcut değil

Nov 24 2020

php artisan rotasını kullandıktan sonra Laravel 8'de bu hatayı alıyorum: liste:

Illuminate \ Contracts \ Container \ BindingResolutionException Hedef sınıfı [Api \ UserController] mevcut değil.

App \ Http \ Controllers \ Api'de bir denetleyicim var:

<?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);
    }
}

yollar / api.php:

<?php

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

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

Laravel'de yeniyim

Yanıtlar

3 Donkarnash Nov 24 2020 at 06:45

Ad use App\Http\Controllers\Api\UserControlleralanı ifadesini içe ::classaktardığınızdan, denetleyici sınıfı için gösterimi kullanabilirsiniz . IDE, dizeden farklı olarak yola gidebileceği için ek faydalar da sağlayacaktır.

Laravel 8'den beri, varsayılan ad alanının artık App\Http\ControllersRouteServiceProvider'da tanımlanmadığını tahmin ediyorum, bunun yerine $ namespace özelliğini istenen değerle ayarlayarak varsayılan ad alanını tanımlamak geliştiriciye bırakılıyor.

<?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

Larvel 8'de daha önce yaptığımız gibi rota çizemezsiniz, bir sonraki sözdizimi şudur:

Denetleyici:

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

Veya

<?php

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

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

Yönlendirme için Dokümanlar