Есть URL, к которому надо прийти: site.com/catalog/cat1/cat2/25-rose-1.html, где cat1 cat2 - это категории, 25-rose - это алиас товара, а 1 - это его ID.
Делаю вот так:
Route::get('catalog/{parentCategory}/{childrenCategory}/{productAlias}-{productId}.html', function($parentCategory, $childrenCategory, $productAlias, $productId){
echo 'Parent category: '. $parentCategory .
' Children category: '.$childrenCategory.
' Product alias: '.$productAlias.
' Product ID: '.$productId;
});
Но результат получается такой:
Parent category: cat1
Children category: cat2
Product alias: 25
Product ID: rose-1
Вопрос: каким образом сделать, чтобы ID товара Laravel смотрел по последнему - в ссылке?
Вы можете уточнить в маршруте что в параметре productAlias используется значение по типу 25-rose с помощью Regular Expression Constraints:
Route::get('catalog/{parentCategory}/{childrenCategory}/{productAlias}-{productId}.html', function($parentCategory, $childrenCategory, $productAlias, $productId) {
echo 'Parent category: '. $parentCategory .
' Children category: '.$childrenCategory.
' Product alias: '.$productAlias.
' Product ID: '.$productId;
})->where('productAlias', '([0-9]+)-([A-Za-z]+)');
В таком случае вывод будет следующим:
Parent category: cat1
Children category: cat2
Product alias: 25-rose
Product ID: 1
Так же можете уточнить и другие значения, к примеру что productId только число, в документации есть примеры как это сделать.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости