대상 클래스 [Api \ UserController]가 없습니다.
Nov 24 2020
php artisan route : list를 사용한 후 Laravel 8에서이 오류가 발생합니다.
Illuminate \ Contracts \ Container \ BindingResolutionException 대상 클래스 [Api \ UserController]가 존재하지 않습니다.
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);
}
}
route / api.php :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('users', 'Api\\UserController@index');
라 라벨의 새로운 임
답변
3 Donkarnash Nov 24 2020 at 06:45
use App\Http\Controllers\Api\UserController
네임 스페이스 문을 가져 ::class
오므로 컨트롤러 클래스에 대한 표기법을 사용할 수 있습니다 . IDE가 문자열과 달리 경로를 탐색 할 수 있기 때문에 추가 이점이 있습니다.
Laravel 8 이후로 기본 네임 스페이스가 더 이상 App\Http\Controllers
RouteServiceProvider 에 있도록 정의되지 않은 것 같습니다. 대신 원하는 값으로 $ namespace 속성을 설정하여 기본 네임 스페이스를 정의하는 것은 개발자의 몫입니다.
<?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에서는 이전처럼 경로를 작성할 수 없습니다. 다음 구문은 다음과 같습니다.
제어 장치:
<?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');
또는
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('/Pages', [UserController::class, 'index']);
라우팅 용 문서