K1-*_*ria 3 php routes laravel laravel-5 laravel-5.3
即时通讯使用laravel 5.4,我有一个品牌和一个产品表.我想在路由中定义两个参数,并在控制器或RouteServiceProvider中进行搜索.
想象一下:site.com/samsung/ =>以三星品牌获得所有产品.
并且:site.com/samsung/galaxys8 =>获得所有采用三星品牌和galaxys8型号的产品
我可以使用两个独立的路径和控制器方法来定义它:(使用1个参数{brand}和controller @ method1定义路由1,并使用2个参数{brand}/{product}和controller @ method2定义路由2)
我能做得更好吗?我在laravel有点新.谢谢
Route::get('/{brand}', 'AdvertismentController@show');
Route::get('/{brand}/{product}', 'AdvertismentController@show2');
public function show($brand)
{
$brands = Advertisment::where('brand' , $brand)->get();
return $brands;
}
public function show2($brand , $product)
{
$products = Advertisment::where('product' , $product)->get();
return $products;
}
Run Code Online (Sandbox Code Playgroud)
我想你想要结合类似的控制器动作,你可以使用这样的可选参数:
Route::get('/{brand}/{product?}', 'AdvertismentController@show');
public function show($brand, $product = null)
{
if (!is_null($product)) {
$results = Advertisment::where('product' , $product)->get();
} else {
$results = Advertisment::where('brand' , $brand)->get();
}
return $results;
}
Run Code Online (Sandbox Code Playgroud)
就像这里的示例问题一样
您在 URI 上传递两个参数:
Route::get('/{brand}/{product}', 'AdvertismentController@show2');
Run Code Online (Sandbox Code Playgroud)
并在观点上:
route('remindHelper',['brand'=>$brandName, 'product'=>productId]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5514 次 |
| 最近记录: |