2017-07-24 106 views
1

即時通訊使用laravel 5.4,我有一個品牌和一個產品表。我想要在路由中定義兩個參數,並讓它們在控制器或RouteServiceProvider中進行搜索。如何在laravel路徑中定義兩個參數

想象:site.com/samsung/ =>獲取與三星品牌的所有產品。

和:site.com/samsung/galaxys8 =>獲取所有產品具有三星品牌和型號galaxys8

我可以定義這個使用兩個分離路線和控制器的方法:(定義與1個參數{品牌}路由一個和控制器@ method1和定義具有2個參數{品牌}/{產品}和控制器@ method2的路線2)

我可以做得更好嗎?我在拉拉維爾有點新鮮。謝謝

Route::get('/{brand}', '[email protected]'); 
Route::get('/{brand}/{product}', '[email protected]'); 



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; 
} 

回答

3

我猜你想結合類似的控制器動作,你可以使用這樣的可選參數:

Route::get('/{brand}/{product?}', '[email protected]'); 

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; 
} 
+0

好看。有效。但你能解釋一下產品在路線上後那個問號是什麼嗎?謝謝 –

+1

參數名後面的問號使參數的存在可選。 –

+0

非常感謝你我的朋友❤️ –

0

就像這個例子問題here

您的URI傳遞兩個參數:

Route::get('/{brand}/{product}', '[email protected]'); 

並且在這個視圖:

route('remindHelper',['brand'=>$brandName, 'product'=>productId]); 
+0

什麼在控制器?讓他們 –