2016-07-31 39 views
0

我試圖在Laravel 5中開發一個e-com網站(因爲它需要大量的定製,我決定不使用Magento或OpenCart)。如何在Laravel中創建slu??

我面臨的問題是從slugs創建類別和產品網址。

例如,一個URL可以是:

http://somewebsite.com/products/lenovo-yoga-500

但我想讓網址,如:

http://somewebsite.com/lenovo-yoga-500

我試圖創建這樣一個路徑:

Route::get('{slug}', '[email protected]'); 

並在路線()我的ThOD,我想:

function route($route){ 
    $product = Product::where(array('slug' => $slug))->first(); 

    if(isset($product)) 
    ..... 
    else 
    ..... 

但首先,價值不獲取傳遞給變量「$蛞蝓」,其次我要檢查的條件後,請求另一路由重定向。

回答

0

您可能想要使用第一個URL(product/{slug}),因爲您使用slug作爲第一個參數來設置它,您爲每個頁面創建的每條路徑都將被解釋爲slug。

無論哪種方式,解決您的控制器方法等

function route($slug){ 
    $product = Product::where(array('slug' => $slug))->first(); 

    if(isset($product)) 
    ..... 
    else 
    ..... 

文檔涵蓋你所要求的一切都在這裏,所以請有關重定向路線通讀。

0

要實現它像Magento一樣,你需要添加一個新的product-routes.php文件,將被重建。

首先指示app/Providers/RouteServiceProvider.php從而加載動態路由文件:

protected function mapWebRoutes(Router $router) 
{ 
    $router->group([ 
     'namespace' => $this->namespace, 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
     require base_path('resources/routes/product-routes.php'); 
    }); 
} 

下一頁:在保存時或當用戶在後臺請求它包括所有產品塊的路線,並通過加載產品自動重建product-routes.php蛞蝓。

希望有所幫助。

public function getRouteKeyName() { 
    return 'slug'; 
} 

在路線:

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

在ProductController的:

0
在產品模型

public function product(Product $product) { 
    $product->doSomething(); 
} 

注意,路徑應該是最後的路線文件,因此任何其他路線有機會在此之前匹配。