Laravel将route中的字符串解释为参数


Laravel interpreting a string in route as parameter

我试着用谷歌搜索,但是我不能正确地表达这个问题,它很简单。

我有这两条路线:

Route::get('admin_firme/{id_firma}/filijale/{id_filijala}', 'FilijalaAdminController@show'); 
Route::get('admin_firme/{id_firma}/filijale/create', 'FilijalaAdminController@create')

它们调用不同的控制器动作。问题出在第二个调用create方法的路由上。part/filijale/create被解释为第一个路由的参数,因此调用了错误的方法。我怎样才能纠正这个问题呢?

我试着命名路由并生成一个url,但它仍然调用错误的方法

把下面的那个拿起来…

Route::get('admin_firme/{id_firma}/filijale/create', 'FilijalaAdminController@create');
Route::get('admin_firme/{id_firma}/filijale/{id_filijala}', 'FilijalaAdminController@show'); 

您可以做两件事。第一个,也是最简单的,是交换它们的顺序,所以当检查匹配路由时,它会检查它是否首先创建,如果没有其他任何匹配id_filijala

你可以做的第二件事是对id_filijala使用模式匹配,例如,如果它只包含数字,那么你可以使用:

Route::get('admin_firme/{id_firma}/filijale/{id_filijala}', 'FilijalaAdminController@show')
    ->where('id_filijala', '[0-9]+');

可以使用任意正则表达式