Правильное построение where для маршрутов laravel

205
02 января 2018, 16:22

Всем привет. Есть следующий маршрут:

Route::get('catalog/{parentCat}/{childrenCat}/{productAlias}-{productId}.html',
      ['as' => 'productPage', 'uses' => 'ProductController@index']
)->where('productAlias', '([0-9]+)-([A-Za-z]+)-([-\w]+)');

Он работает на URL'ах, которые содержат минимум 2 знака тире (-). Почему так происходит? Т.е. на ссылке: catalog/flowers/roses/101-rose-2.html этот маршрут не работает, а на http://larashop.loc/catalog/flowers/roses/101-rose-60sm-2.html работает. Каким образом сделать, чтобы он работал и на первом варианте? Можно ли сделать в регулярке выражение ([-\w]+) необязательным?

Answer 1

Попробуйте такой вариант:

->where('productAlias', '[A-Za-z0-9-]+')
->where('productId', '[0-9]+');
READ ALSO
Минимально необходимые параметры для PHP-FPM?

Минимально необходимые параметры для PHP-FPM?

В документации NGINX указано, что минимально необходимые параметры это:

241
Не выполняется запрос к БД через PHP

Не выполняется запрос к БД через PHP

Привет)Никак не могу понять почему не выполняется запрос,сама суть что этот пример запроса взят с учебника по phpВ браузере пишет Ошибка при...

264
Получить только путь

Получить только путь

Есть строка <img src="images/stories/2017/12/2-51jpg">

311
Браузер все равно кеширует данные файла

Браузер все равно кеширует данные файла

У меня есть файл JSON, который нельзя кешироватьЯ его запрашиваю из файла history

224