如何在Laravel中使用id和/ route?

时间:2015-04-10 11:53:54

标签: laravel

我有两条路线:

/route/{id}
/route/add

第一个显示基于id提供的内容,第二个提供添加新闻项的形式。我的问题是,当我点击/route/add时,它会接受添加词并将其视为第一条路线的ID。 在laravel中是否有任何解决方案,或者我必须使用不同的路径名称?

2 个答案:

答案 0 :(得分:3)

路线以先到先得的方式运作。首先查看较早的路线。由于您在这两条路线中的第一条路线上有一个通配符{id},因此Laravel将add视为{id}并将传递给该控制器/闭包。

您应该像这样切换两条路线:

Route::get('route/add', 'Controller@method');
Route::get('route/{id}', 'Controller@method');

或者你总是可以在第一条路线上添加过滤器,以告诉Laravel {id}应该是一个数字:

Route::get('route/{id}', 'Controller@method')->where('id', '[0-9]+');
Route::get('route/add', 'Controller@method');

这样,Laravel会尝试将add与您的{id}通配符匹配,但会失败,因为add不是数字。

答案 1 :(得分:0)

请更换两行:

/route/add
/route/{id}

{id}参数并不总是期望数值。字符串也有效,例如“add”。