2016-09-21 3 views
1

내 경로는 다음과 같습니다 Laravel 경로 선택적 매개 변수 문제

Route::get('members/{name?}/{id}', '[email protected]'); 
Route::get('members/{id}/edit', '[email protected]'); 

내가 블레이드에서 URL 링크를 클릭

,

<a href="members/1/edit">Edit</a> 

는 첫번째 경로로 이동하고 Sample1Controller @ sampleFn1를 호출합니다. 왜?? 도와주세요 ..

링크를 클릭하면 .. 두 번째 경로로 이동하여 Sample2Controller @ sampleFn2를 호출하고 싶습니다. 어떤 도움이 필요합니까?

미리 감사드립니다.

+0

: 이 경우, 한 레벨 위로 끝 그리고 상태 텍스트에 선택적 매개 변수를 이동하여 모호성을 피하기 위해 필요 당신은 거기에있다, 그것은 첫 번째,'1' = $ name과'edit' = $ id를 선택한다. 매개 변수가있는 경로는 항상 마지막에두고 정적 텍스트가있는 경로를 먼저 넣으십시오. 아래 답변 중 일부처럼 경로에서 필터 또는 where 절을 수행 할 수도 있습니다. – Carlos

답변

1
Route::get('members/{name?}/{id}', '[email protected]'); 

URL은 모두 laravel과 동일하게 보입니다.이 경우 $ name은 "1"로 설정되고 $ id는 "edit"로 설정됩니다. 이 중 하나의 경로를 일치시킬 수 있기 때문에, 당신은 '회원/1/edit` 방문 할 때

Route::get('members/edit/{id}', '[email protected]'); 
Route::get('members/{id}/{name?}', '[email protected]'); 
0

특정 제약 조건에 대해 이름이나 ID의 유효성을 검사하지 않으므로/1/편집 권한이 있습니다 ... 동일한 경로 정의를 사용하려면 정의 순서를 간단히 바꿀 수 있습니다.

4

당신은 경로를 추가해야 할 경우 매개 변수에 대한 조건. 우선은 quess 정수에 대한 두 번째, 찌르기위한 것입니다 :

Route::get('members/{name?}/{id}', '[email protected]')->where([ 
    'name' => '[a-z]+', 
    'id' => '[0-9]+', 
]); 
Route::get('members/{id}/edit', '[email protected]')->where([ 
    'id' => '[0-9]+' 
]); 
0
 Route::get('/post-delete/{post_id}',[ 
'uses' => '[email protected]', 
'as' => 'post.delete', 
'middleware' => 'auth' 
]); 

내 컨트롤러는이

public function getDeletePost($post_id) 
{ 
    $post = Post::where('id',$post_id)->first(); 
    if(Auth::user() != $post->user) 
    { 
     return redirect()->back(); 
    } 
    $post->delete(); 
    return redirect()->route('dashboard')->with(['message' => 'Sucessfully Deleted Taunt']); 
} 

처럼 내 blade.php이

<a href="{{ route('post.delete',['post_id' => $post->id]) }}">Delete</a> 

등이다 위의 코드는 편집을 위해 시도해보십시오.