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

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 方法的第二条路由中。 /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]+');

您可以在 where 中使用任何正则表达式。