我在Laravel 5.2上创建了internet-marketn 需要做类似slug的网址中的breadcrumps,
喜欢这样
/目录/ {category_1} / {category_2} / {category_n}
但只获取最后一个参数并将其绑定到Model
此外,最后一个类别可以有产品slug和路线可以像
/目录/ {category_1} / {category_2} / {category_n} /产品/ {product_slug}
我的路线
Route::group(['prefix' => 'catalog'], function () {
Route::get('/', ['as' => 'shop_catalog', 'uses' => 'CatalogController@catalog']);
Route::group(['prefix' => '{category}'], function () {
Route::get('/', ['as' => 'shop_show_category', 'uses' => 'CategoryController@category']);
Route::group(['prefix' => 'product/{product}'], function () {
Route::get('/', ['as' => 'shop_show_product', 'uses' => 'ProductController@product']);
});
尝试在RouteServiceProvider中写入模式,如
$route->pattern('category', '.*');
然后由' /'爆炸并获取绑定的最后一个元素。但无法获得产品参数。
我该怎么做这个逻辑?
答案 0 :(得分: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' => 'ProductController@product']);
});
Route::get('/', ['as' => 'shop_show_category', 'uses' => 'CategoryController@category']);
});
通过重新排列以便首先使用更具体的路由,您知道路由器将首先检查shop_show_product
路由是否匹配。如果未能在网址末尾看到product/xxx
,则会尝试匹配shop_show_category
路由。