2016-07-31 22 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(); 
} 

注意,路径应该是最后的路线文件,因此任何其他路线有机会在此之前匹配。