2016-08-22 1 views
0

私はカテゴリスラグと、URLのbreadcrumpsような何かをする必要がありLaravel 5.2 上のインターネット・marketnを作成し、そのようなLaravelマルチネストされた同じルートパラメーター

/カタログ/ {category_1}/{ category_2}/{} category_n

だけ最後のパラメータを取得し、モデル

にそれをバインドし、さらに最後のカテゴリ缶は、製品のスラグやルートを持っている

のようにすることができます

$route->pattern('category', '.*'); 

等RouteServiceProvider 210

/カタログ/ {category_1}/{category_2}/{category_n} /製品/ {product_slug}

私のルーティング

Route::group(['prefix' => 'catalog'], function() { 
    Route::get('/', ['as' => 'shop_catalog', 'uses' => '[email protected]']); 

    Route::group(['prefix' => '{category}'], function() { 
     Route::get('/', ['as' => 'shop_show_category', 'uses' => '[email protected]']); 

     Route::group(['prefix' => 'product/{product}'], function() { 
      Route::get('/', ['as' => 'shop_show_product', 'uses' => '[email protected]']); 
}); 

試し書きパターンそして'/'で爆発し、最後の要素を束縛する。しかし、製品のパラメータを取得することはできません。

どうすればこのロジックを実行できますか?

答えて

0

あなたのルートの順序は本当に重要です。

shop_show_categoryルートが最初にリストされているため、ルータがshop_show_productルートと具体的に一致するかどうかを確認することはありません。より具体的なルートは最初のものであるので、整理する

Route::group(['prefix' => '{category}'], function() { 
    Route::group(['prefix' => 'product/{product}'], function() { 
     Route::get('/', ['as' => 'shop_show_product', 'uses' => '[email protected]']); 
    }); 
    Route::get('/', ['as' => 'shop_show_category', 'uses' => '[email protected]']); 
}); 

は、あなたは、ルータが最初のマッチのためにshop_show_productルートをチェックします知っています。 URLの最後にが表示されないと、shop_show_categoryのルートに一致するように試みます。

関連する問題