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 中使用任何正则表达式。
我试过谷歌搜索,但我无法正确表述问题,这很简单。
我有这两条路线:
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 中使用任何正则表达式。