Как я могу добавить расширения URL в маршруты Laravel с необязательными параметрами? - PullRequest
1 голос
/ 03 апреля 2019

У меня есть следующие маршруты для интернет-магазина с категориями и продуктами:

Route::name('shop.products.view')->get('/p/{productUrl}', 'Shop\ProductsController@view');
Route::name('shop.categories.view')->get('/c/{categoryOne}/{categoryTwo?}/{categoryThree?}', 'Shop\CategoriesController@view')

categoryTwo является подкатегорией категорииOne

categoryThree является подкатегорией категорииTwo

Thisработает отлично, но мне нужно поставить .html в конце, чтобы URL были точно такими же, как URL из старого интернет-магазина.

Для страницы продукта это не проблема:

Route::name('shop.products.view')->get('/p/{productUrl}.html', 'Shop\ProductsController@view');

Если я сделаю это для страницы категории, она не будет работать, если необязательные параметры не заполнены.

Route::name('shop.categories.view')->get('/c/{categoryOne}/{categoryTwo?}/{categoryThree?}.html', 'Shop\CategoriesController@view')

В результате: domain.com / c / category1 //. Html

Любые идеи о том, как решить эту проблему, поэтому я получаю:

domain.com / c / category1.html

domain.com / c / category1 / category2.html

domain.com / c / category1 / category2 / category3.html

1 Ответ

0 голосов
/ 03 апреля 2019

У вас есть два варианта:

  1. Использовать категорию 2 и категорию 3 в качестве параметров запроса после .html и передать их как ?category2=aaa&category3=bbb;
  2. Определить несколько маршрутов под одним и тем жесгруппируйте следующим образом (см. следующий пример кода).Мне не нравится это решение, но оно должно работать, если вы правильно вызываете маршруты, а не из построителя URL URL::action('Shop\CategoriesController@view').
    Route::name('shop.products.view.')->group(function () {
        Route::get('/c/{categoryOne}/{categoryTwo}/{categoryThree}.html', 'Shop\CategoriesController@view');
        Route::get('/c/{categoryOne}/{categoryTwo}.html', 'Shop\CategoriesController@view');
        Route::get('/c/{categoryOne}.html', 'Shop\CategoriesController@view')
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...