Laravel 8에서 "Target Class Controller Does Not Exist" 오류 수정
Laravel 8을 사용할 때 다음 오류가 발생할 수 있습니다: " 대상 클래스 [ApiRegisterController]가 존재하지 않습니다." 이는 Laravel이 경로 그룹에서 네임스페이스 접두사를 처리하는 방법이 변경되었기 때문에 발생합니다.
Laravel 8에서는 이전에 컨트롤러 경로 정의에 접두사를 추가했던 RouteServiceProvider의 $namespace 속성이 이제 다음과 같이 null로 설정됩니다. 기본. 이는 경로에서 컨트롤러를 참조할 때 정규화된 클래스 이름을 사용해야 함을 의미합니다.
이 문제를 해결하려면 다음과 같은 몇 가지 옵션이 있습니다.
정규화된 클래스 이름 사용:
라우트의 컨트롤러에 정규화된 클래스 이름을 사용하세요. 예:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
경로 그룹에서 네임스페이스 접두사 정의:
이전 방식을 선호하는 경우 RouteServiceProvider에서 경로 그룹에 대한 네임스페이스 접두사를 정의할 수 있습니다. 이를 수행하는 방법은 다음과 같습니다.
public function boot() { ... Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php')); ... }
$namespace 속성 설정:
RouteServiceProvider에서 $namespace 속성의 주석 처리를 제거하는 것은 일부 소스에서 언급되지만 URL 생성에만 영향을 미칩니다. 작업을 수행하며 경로에 네임스페이스 접두사를 자체적으로 추가하지 않습니다.
Laravel 업데이트 8.0.2 이상:
버전 8.0.2 이후 Laravel 8을 새로 설치한 경우 RouteServiceProvider에서 보호된 $namespace 멤버 변수의 주석 처리를 제거하여 이전 동작으로 되돌릴 수 있습니다.
핵심은 경로 그룹에 대한 네임스페이스 접두사를 정의하는 것이며, 선호도에 따라 위에서 언급한 방법 중 하나를 선택하여 "대상 클래스"를 수정할 수 있습니다. Laravel 8의 컨트롤러가 존재하지 않습니다.
위 내용은 Laravel 8에서 '대상 클래스 컨트롤러가 존재하지 않습니다' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!