source

Laravel은 "루트가 정의되지 않았습니다"라고 말합니다.

bestscript 2022. 10. 23. 11:41

Laravel은 "루트가 정의되지 않았습니다"라고 말합니다.

내가 가는 길에.php 가지고 있는 것:

Route::patch('/preferences/{id}', 'UserController@update');

보기 파일(계정/기본 설정)에도 있습니다.blade.php)는 다음과 같습니다.

{!! Form::model(Auth::user(), ['method' => 'PATCH', 'route' => '/preferences/' . Auth::user()->id]) !!}

하지만 다음과 같은 오류가 발생합니다.

루트 [/preferences/1]가 정의되지 않았습니다.

를 호출할 때 동일한 오류가 발생합니다.route()도우미 직접:

route('/preferences/' . Auth::user()->id');

이 주제에 대한 문서를 잘못 알고 있는 것 같습니다만, 지정된 파라미터로 PATCH 요청 경로를 정의하고 뷰에서 올바르게 설정했습니다.내가 여기서 간과하고 있는 게 뭐지?

route()method(메서드)는, 다음의 경우에 호출됩니다.['route' => 'someroute']이른바 '명칭 루트'를 원하는 거죠루트에 다음과 같은 이름을 붙입니다.

Route::patch('/preferences/{id}',[
    'as' => 'user.preferences.update',
    'uses' => 'UserController@update'
]);

즉, 루트의 두 번째 인수를 배열로 만듭니다.여기서 양쪽 루트명을 지정합니다(as루트가 히트했을 때의 대처법(uses).

다음으로 폼을 열면 루트를 호출합니다.

{!! Form::model(Auth::user(), [
    'method' => 'PATCH',
    'route' => ['user.preferences.update', Auth::user()->id]
]) !!}

파라미터가 없는 루트에 대해서는'route' => 'routename'단, 파라미터가 있기 때문에 어레이를 작성하고 파라미터를 순서대로 지정합니다.

즉, 현재 사용자의 프리퍼런스를 갱신하고 있는 것 같기 때문에, 핸들링 컨트롤러가 현재 로그인하고 있는 사용자의 ID를 체크해, 그것을 기초로 업데이트를 실시하는 것을 추천합니다.사용자가 다른 사용자의 프리퍼런스를 갱신할 필요가 없는 한, URL과 루트에 ID를 송신할 필요는 없습니다.:)

이 스레드는 오래되었지만 가장 먼저 나온 스레드이기 때문에 해결책을 공유한다고 생각했습니다.루트가 지정되어 있는 것 외에routes.php이 오류는 루트 파일에 중복된 URL이 있는 경우에도 발생할 수 있지만 이름이 다른 경우 이 시나리오에서 오류가 발생할 수 있습니다.예제:

Route::any('official/form/reject-form', 'FormStatus@rejectForm')
                                           ->name('reject-form');  

Route::any('official/form/accept-form', 'FormStatus@acceptForm')
                                           ->name('accept-form');

이름 중 하나를 바꾸면 문제가 해결됩니다.복사, 붙여넣기 및 피로가 이 문제의 원인이 될 수 있습니다. : )

루트가 정의되지 않은 경우 web.php 라우팅 파일을 확인합니다.

Route::get('/map', 'NavigationController@map')->name('map'); // note the name() method.

그런 다음 보기에서 다음 방법을 사용할 수 있습니다.

<a class="nav-link" href="{{ route('map') }}">{{ __('Map') }}</a>

PS: __('Map')은 "Map"을 현재 언어로 번역하는 것입니다.

또한 장인 명령어로 표시할 수 있는 경로의 이름 목록:

php artisan route:list

저는 Larabel 5.7을 사용하고 있으며, 위의 답변들을 모두 시도해 보았지만, 아무 의미도 없는 것 같습니다.

저는 Larabel이 작성한 캐시 파일을 삭제하는 것이 비교적 간단한 수정이었습니다.
변경 내용이 반영되지 않은 것 같아서 응용 프로그램에서 경로를 볼 수 없었습니다.

조금 오버킬이지만 다음 명령을 사용하여 모든 캐시를 동시에 리셋하기로 했습니다.

php artisan route:clear
php artisan view:clear
php artisan cache:clear

첫입니다.bootstrap/cache/routes.phpfilename을 클릭합니다.
는 에 저장되어 합니다.storage/framework/cache더입니니다다
마지막으로 마지막 명령을 실행하면 응용 프로그램 캐시가 지워집니다.

명령어를 실행할 때

php artisan route:list

등록된 모든 루트가 테이블 형식으로 표시됩니다.Method , URI , Name , Action 등의 컬럼이 많이 표시됩니다.기타.

따라서 기본적으로 route() 메서드를 사용하는 경우 이름 열 값만 받아들이고 URI 컬럼 값을 사용하는 경우 larabel의 url() 메서드를 사용해야 합니다.

또 하나의 원인은 다음과 같습니다.

루트가 같은 URI(알 수 없는 것)로 덮어쓰면 다음 오류가 발생합니다.

예:

Route::get('dashboard', ['uses' => 'SomeController@index', 'as' => 'my.dashboard']);
Route::get('dashboard/', ['uses' => 'SomeController@dashboard', 'as' => 'my.home_dashboard']);

이 경우 두 루트의 URI('대시보드', '대시보드/')가 동일하기 때문에 'my.dashboard' 루트는 비활성화됩니다.

솔루션:둘 중 하나의 URI를 변경해야 합니다.

예:

Route::get('dashboard', ['uses' => 'SomeController@index', 'as' => 'my.dashboard']);
Route::get('home-dashboard', ['uses' => 'SomeController@dashboard', 'as' => 'my.home_dashboard']); 

// 이 '홈대시보드'에 대해 변경된 URI를 참조하십시오.

언젠가 도움이 되길 바라.

내 경우는 형식이 아니라 보기를 반환하는 것이기 때문에 조금 다르다. 추가->name('route').

MyView.blade.php음음음같 뭇매하다

<a href="{{route('admin')}}">CATEGORIES</a>

★★★★★★★★★★★★★★★★★.web.php됩니다.

Route::view('admin', 'admin.index')->name('admin');

저도 같은 문제가 있어서 최근에 해결책을 찾았어요.

루트가 루트 내에 있는지 확인해야 합니다.: group

다음과 같습니다.

Route::group(['prefix' => 'Auth', 'as' => 'Auth.', 'namespace' => 'Auth', 'middleware' => 'Auth']

이 경우 보기 파일에서 사용해야 합니다.다음과 같습니다.

!! Form::model(Auth::user(), ['method' => 'PATCH', 'route' => 'Auth.preferences/' . Auth::user()->id]) !!}

제 경우 해결책은 간단했습니다.

는 루를정 the of 의 맨 를 정의했다.route.phpfilename을 클릭합니다.

명명된 경로를 아래로 이동한 후, 내 앱은 마침내 그것을 보았습니다.루트가 너무 일찍 정의되었다는 것을 의미합니다.

사이드 노트:

"Action method not found" (액션 메서드를 찾을 수 없습니다)라는 에러가 자주 발생하는 유사한 문제가 있었습니다만, 확실히 컨트롤러에 정의되어 있습니다.

문제는 컨트롤러가 아니라 경로 방법에 있습니다.php 파일이 셋업되었습니다.

컨트롤러 클래스가 라우팅 중인 리소스로 설정되어 있다고 가정합니다.php 파일

Route::resource('example', 'ExampleController');

그러면 '/filename'에 모든 RESTful 리소스가 나열됩니다.http://laravel.com/docs/5.0/controllers#restful-resource-controllers

그러나 'action'=> 'ExampleController@postStore' 등의 형식으로 정의를 원할 경우 이 경로를 변경해야 합니다(루트 중).php 파일) 대상:

Route::controller('example', 'ExampleController');

이 명령어는

php artisan route:list

또는 더 많은 필터 다운리스트를 가져오려면

php artisan route:list | grep your_route|your_controller

fourse 컬럼에는 등록된 루트 이름이 표시됩니다(통상은 Route: resource에 의해 생성됩니다).

언급URL : https://stackoverflow.com/questions/28714675/laravel-says-route-not-defined