Error기록 노트/PHP | Laravel

[Laravel, PHP] Route [create] Not Defined error 해결 방법

에러노트 2022. 12. 6. 17:44

안녕하세요. 오늘도 몇시간 째 에러와 함께 씨름 중인 에러노트입니다. 오늘도 메모해두려 이렇게 왔습니다. (닉값을 제대로 하고 있죠? ㅎ)

Route [create] Not Defined. 즉, Route('create')라고 쓴 경로가 제대로 정의되지 않았다고 오류가 발생한 상황입니다.

라우터(web.php), 컨트롤러(Controller.php), 뷰(index_blade.php) 중 문제가 있는 것까진 알겠는데!!!!

그래서 도무지 어디가 문제인지 몰라 4시간을 넘게 헤매어 드디어 해결하게 되어 곧바로 글을 쓰러 달려왔습니다!

 

우선, 아래 3군데 모두 살펴보아야 합니다. 각각 어떻게 쓰여 있는지 확인해봅시다.

1. 라우터 경로 이름 확인  (저의 문제는 여기였습니다.)

web.php의 24줄

24번 라인을 보면 제가 뒤에 ->name('create');를 추가한 것을 볼 수 있습니다. 저의 경우, 이름이 명확하게 명명되어야 하기에(이런 일이 없도록 이름을 잘 지으면 좋겠죠?) 명확하게 지정해주었습니다.

문제의 라우터....아래처럼 작성하여 돌려보니 바로 해결되더랍니다...

Route::get('/create','PostController@create')->name('create');
//여기서 '/create'가 실제 주소창에 붙을 이름입니다.
//예를 들자면, http://localhost:8000/create가 되는 것이죠.
//'PostControoler(컨트롤러명)@create(컨트롤러 내의 public function create()를 뜻함)'

 

2. 컨트롤러 확인

PostController.php의 20줄~21줄

view페이지로 넘어가는 이름도 보시다시피 create입니다. (헷갈릴 수 있으니 기발한 이름으로 쓰시길 바랍니다...ㅎ..나중에 이게 뷰의 create이름을 말하는건지, 함수를 말하는건지, 메서드를 말하는 건지 헷갈립니다..)

3. 뷰 확인

index.blade.phpdml 15줄

여기서 route('create.create')가 맞는건지, route('create')가 맞는건지 헷갈려하고 있었지만, 라우터의 문제였다는 것을 4시간만에 깨달았습니다. 작성 방법이 워낙 다양하다보니 아직까지 어렵네요.

 

* 결과를 어떻게 확인하나요?
크롬 등에서 실행해서 결과를 확인하고자 할 때 터미널, 파워 쉘 등에서 아래와 같이 실행하여서버를 띄운 후 원하는 주소로 가셔야 결과가 출력됩니다.(실행 시 위치는 laravel project가 있는 위치에서 터미널, 파워 쉘 등을 켜야 합니다.)

$ php artisan server

 

여러분들은 저처럼 4시간씩 삽질하지 않길 바라며 오늘도 도움이 되셨길 바랍니다!