2016-11-22 2 views
1

현재 Laravel 5.3을 사용하고 있으며 여러 경로가 있습니다. 그래서 같은 route() 기능을 사용하여 내 블레이드 템플릿 메신저에 따라서Laravel 라우트 매개 변수가 올바르게 작동하지 않습니다.

Route::get('/news/create/{product}', '[email protected]')->name('news::create'); 

:

{{route('news::create','car')}} 

그러나 생성 된 URL이

/news/create?car 

하지 필요한

/news/create/car 

는 IS 같은 내가 그것을 그렇게 같은 키 주면

{{route('news::create',['car'])}} 

: 그리고 것은 내가 배열에 넣어하면 어떻게

{{route('news::create',['product'=>'car'])}} 

를 내가 얻을 :

/news/create?product=car 

가 어떻게 올바른받을 수 있나요 url 그래서 매개 변수로 'create'함수에 전달됩니까?

+0

첫 번째 질문 - 왜 당신이 내 거기에 콜론으로 경로를 이름입니까? –

답변

0

먼저 경로 이름을 확인하십시오. 나는 'news :: create'와 같은 경로를 명명하는 것에 특별히 잘못된 것이 없다고 생각하지 않는다. 그것과는 별개로, 나쁜 행동이라고 생각할 것이다. 나는 camel casing으로 가고 싶습니다. 즉, createNews과 같은 이름을 사용하고 싶습니다. 코드의 이전 섹션에서 작업 할 때 훨씬 쉬워졌으며 다른 프로그래머가 프로젝트에서 작업 할 때 당신을 찌르는 것을 막을 수 있습니다.

경로 이름을 지정할 수있는 이유는 경로 URI 또는 ​​컨트롤러 끝점을 변경하더라도 이름이 정적으로 유지되기 때문입니다. 경로 매개 변수를 사용하여 변수를 전달할 수 있습니다.

Route::get('/news/create/{product}', array('as' => 'createNews', 'uses' => '[email protected]')); 


route('createNews', ['product' => 'car']);