Разделение товаров и категорий по маршруту (Laravel) - PullRequest
1 голос
/ 13 апреля 2019

Я настраиваю новую систему маршрутов.

Route::get('/{cat1Url}', 'CategoryController@showCat1')->name('showCat1');

Route::get('/{productUrl}', 'ProductController@showProduct')->name('showProduct');

Моя ссылка на sef указана после "/" Но,

{{ route('showProduct',[$p->pr_url]) }}

Этот метод не работает с именем маршрута. Работает только верхний маршрут.

Я не хочу использовать "/ Кошка / MYVARIABLE" или же "/ product / myVariable"

Разве я не могу использовать имя маршрута для такой работы? Какое решение для этого?

Ответы [ 2 ]

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

У вас должен быть способ сообщить Laravel, какой URL-адрес будет отображен, в противном случае он всегда будет использовать последний определенный маршрут. Так что в вашем случае при вызове /myVariable и /myVariable он будет использовать последнее определение, showProduct. Единственный другой способ - использовать регулярное выражение для дифференциации переменных. Например:

Route::get('/{cat1Url}', 'CategoryController@showCat1')
    ->name('showCat1')->where('cat1Url', 'cat-*');

Route::get('/{productUrl}', 'ProductController@showProduct')
    ->name('showProduct')->where('productUrl', 'prod-*');

Таким образом, ваши слагы должны начинаться с того, что вы определили, но вы не можете использовать просто id в качестве числового значения для обоих.

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

Таким образом, если вы сделаете запрос get на /something уровень, который вы начинаете с вершины файла web.php и ищите маршрут, который следует шаблону. Оба ваших маршрута будут следовать этому шаблону, но метка всегда будет передавать первый контроллеру. У вас есть два варианта:

  1. Поставьте только один маршрут, и внутри контроллера вы переключитесь на соответствующую функцию. Но это не очень хорошая идея, потому что это функция Web.php .

  2. Используйте маршруты, как рекомендуется в документации:

Route::get('/cat/{catId}', 'CategoryController@showCat')->name('showCat');

Route::get('/prod/{productId}', 'ProductController@showProduct')->name('showProduct');

и в Controller вы делаете соответствующий обработчик для вашей категории или продукта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...