我(对我而言)是一个有趣的网址问题。
这是我的情况。我有一个用户填充的数据库,所以我不能确定我将拥有多少个子区域。
我将始终有一个区域,一个或更多子区域,以及一个结束我的网址的位置。
示例:/ area / subarea1 / subarea2 / location
这稍微简化了我的需要。我需要能够为以下网址提供服务;
/面积/ subarea1 /位置
/面积/ subarea1 / subarea2 / subarea3 /位置)
我的路线看起来像这样:
Route::get('area/{subarea1}', 'SubareaController@show');
Route::get('area/{subarea1}/{location}', 'LocationController@show');
Route::get('area/{subarea1}/{subarea2}', 'SubareaController@show2');
Route::get('area/{subarea1}/{subarea2}/{location}', 'LocationController@show2');
所以这里的问题是我的路线相互重叠,因为它们基本相同。
我的问题是这个。当它们具有相同的url结构时,有没有办法区分这些路由?如果没有,是否有更好的方法来处理区域和位置之间的多个子区域?
修改
好的我已经尝试命名我的路由,但我似乎无法正确使用命名路由和视图中的所有参数。我可以查看区域/ {subarea1} / subarea1 / {subarea2} / subarea2解决方案,即使我不想拥有更长的网址。
答案 0 :(得分:2)
这是因为Laravel无法将每条路线与另一条路线区分开来。例如,它会将这两个网址路由到同一个操作:
example.com/area/my-subarea-1/my-location
example.com/area/my-subarea-1/my-subarea-2
所以你需要不同的路径。试试这个:
Route::get('area/subarea1/{subarea1}', 'SubareaController@show');
Route::get('area/subarea1/{subarea1}/location/{location}', 'LocationController@show');
Route::get('area/subarea1/{subarea1}/subarea2/{subarea2}', 'SubareaController@show2');
Route::get('area/subarea1/{subarea1}/subarea2/{subarea2}/location/{location}', 'LocationController@show2');