如何在Laravel中使用id和/或路由?

如何在Laravel中使用id和/或路由?,laravel,Laravel,我有两条路线: /route/{id} /route/add 第一个根据提供的id显示一些内容,第二个提供用于添加新闻项的表单。我的问题是,当我点击/route/add时,它接受add单词并将其作为第一条路由的id。 laravel是否有解决方案,或者我是否必须使用不同的路线名称?请更换两条线路: /route/add /route/{id} {id}参数并不总是需要一个数值。字符串也有效,如“添加”。请替换两行: /route/add /route/{id} {id}参数并不总是需要一个

我有两条路线:

/route/{id}
/route/add
第一个根据提供的id显示一些内容,第二个提供用于添加新闻项的表单。我的问题是,当我点击
/route/add
时,它接受add单词并将其作为第一条路由的id。
laravel是否有解决方案,或者我是否必须使用不同的路线名称?

请更换两条线路:

/route/add
/route/{id}

{id}
参数并不总是需要一个数值。字符串也有效,如“添加”。

请替换两行:

/route/add
/route/{id}

{id}
参数并不总是需要一个数值。字符串也有效,如“添加”。

请替换两行:

/route/add
/route/{id}

{id}
参数并不总是需要一个数值。字符串也有效,如“添加”。

请替换两行:

/route/add
/route/{id}

{id}
参数并不总是需要一个数值。字符串也像“add”一样有效。

路由以先到先得的方式工作。先看一下早期的路线。由于您在这两条路径中的第一条路径上有一个通配符
{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
不是一个数字。

路由以先到先得的方式工作。先看一下早期的路线。由于您在这两条路径中的第一条路径上有一个通配符
{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
不是一个数字。

路由以先到先得的方式工作。先看一下早期的路线。由于您在这两条路径中的第一条路径上有一个通配符
{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
不是一个数字。

路由以先到先得的方式工作。先看一下早期的路线。由于您在这两条路径中的第一条路径上有一个通配符
{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
不是一个数字。

尝试使用
->where('id','0-9]+')在路线上。这应该告诉Laravel生成一个只匹配数字的正则表达式。只需将add规则行放在另一个规则行之前,并/或使您的id只匹配数字。尝试使用
->where('id','[0-9]+')在路线上。这应该告诉Laravel生成一个只匹配数字的正则表达式。只需将add规则行放在另一个规则行之前,并/或使您的id只匹配数字。尝试使用
->where('id','[0-9]+')在路线上。这应该告诉Laravel生成一个只匹配数字的正则表达式。只需将add规则行放在另一个规则行之前,并/或使您的id只匹配数字。尝试使用
->where('id','[0-9]+')在路线上。这应该告诉Laravel生成一个只匹配数字的正则表达式。只需将add规则行放在另一个规则行之前,和/或使您的id只匹配数字。