> 백엔드 개발 > PHP 튜토리얼 > Laravel 8에서 '대상 클래스 컨트롤러가 존재하지 않습니다' 오류를 수정하는 방법은 무엇입니까?

Laravel 8에서 '대상 클래스 컨트롤러가 존재하지 않습니다' 오류를 수정하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-19 19:29:12
원래의
402명이 탐색했습니다.

How to Fix the

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿