Fus*_*ion 5 laravel-routing laravel-5.3
是否可以使用多个参数进行路由模型绑定?例如
网络路线:
Route::get('{color}/{slug}','Products@page');
Run Code Online (Sandbox Code Playgroud)
因此url www.mysite.com/blue/shoe将绑定到shoe具有color蓝色的模型。
小智 9
首先,像下面这样的路线会感觉更自然:
Route::get('{product}/{color}', 'Products@page');
Run Code Online (Sandbox Code Playgroud)
并product通过路由绑定解析,直接使用color控制器方法中的参数,例如获取蓝色鞋子列表。
但让我们假设出于某种原因,这是一项要求。我会让你的路线更明确一点,首先:
Route::get('{color}/{product}', 'Products@page');
Run Code Online (Sandbox Code Playgroud)
然后,在 的boot方法中RouteServiceProvider.php,我会添加如下内容:
Route::bind('product', function ($slug, $route) {
$color = $route->parameter('color');
return Product::where([
'slug' => $slug,
'color' => $color,
])->first() ?? abort(404);
});
Run Code Online (Sandbox Code Playgroud)
first 这里很重要,因为在解析这样的路由模型时,您实际上希望返回单个模型。
这就是为什么我认为它没有多大意义,因为您想要的可能是特定颜色的产品列表,而不仅仅是单个产品。
无论如何,我在寻找一种方法来实现我上面演示的内容时最终遇到了这个问题,所以希望它会帮助其他人。
| 归档时间: |
|
| 查看次数: |
5135 次 |
| 最近记录: |