我的路线是:
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');
Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2');
当我点击刀片上的网址链接时,
<a href="members/1/edit">Edit</a>
它转到第一个路径并调用Sample1Controller @ sampleFn1。为什么??请帮忙..
当我点击链接时..我想去第二条路线并调用Sample2Controller @ sampleFn2。有什么帮助吗?
提前致谢。
答案 0 :(得分:4)
您需要将条件添加到参数的条件。首先我讨论的是叮咬,第二个是整数:
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1')->where([
'name' => '[a-z]+',
'id' => '[0-9]+',
]);
Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2')->where([
'id' => '[0-9]+'
]);
答案 1 :(得分:1)
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');
对于laravel,两个URL看起来都相同,在这种情况下,$ name被设置为&#34; 1&#34;并且$ id被设置为&#34;编辑&#34;。 您需要通过将可选参数移动到最后来避免歧义 并且状态文本返回一级,在这种情况下:
Route::get('members/edit/{id}', 'Sample2Controller@sampleFn2');
Route::get('members/{id}/{name?}', 'Sample1Controller@sampleFn1');
答案 2 :(得分:0)
它没有针对任何特定约束验证名称或ID,因此您/ 1 / edit符合条件......使用相同的路径定义,您可以简单地颠倒定义的顺序。
答案 3 :(得分:0)
尝试以下方法:
Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2');
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');
答案 4 :(得分:0)
Route::get('/post-delete/{post_id}',[
'uses' => 'PostController@getDeletePost',
'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>
以上代码用于删除,请尝试编辑