Intereting Posts
Вычисление среднего цвета между двумя цветами в PHP, используя номер индекса в качестве эталонного значения Проверьте, выполняется ли процесс с использованием PHP в Linux Как получить идентификатор сообщения в WordPress Admin Проблема с загрузкой Firefox Цитирование флагов в php при отправке в базу данных Как назначить значение переменной javascript переменной php PHP MySQL Query, чтобы получить наибольшую популярность из двух разных таблиц В чем разница между PSR-0 и PSR-4? Как обеспечить, чтобы значения атрибутов, содержащие кавычки, не нарушали форматирование? ZF2 пустой контейнер для сеансов между страницами Как добавить пользовательские поля в регистрационную форму WooCommerce Как получить определенное значение параметра из заданного значения php PHP-функция или файл для запуска до и после каждого запроса Хранение и получение пути изображения в базе данных mysql php uploadify – переименовать загруженный файл

Получить идентификатор из пули Laravel 4

Я использую Laravel 4.1. Поэтому я хочу создать URL, используя эту структуру: domain.tld / macbook-pro-2389 и используя этот маршрут:

Route::get('{sc}-{id}', 'ProductController@getDetails') ->where('id', '\d+'); 

Но проблема в том, что я не могу получить точно идентификатор, когда пуля содержит несколько тире.

Как я могу это сделать и сохранить одну и ту же структуру?

РЕДАКТИРОВАТЬ

Единственное решение, которое я делал до сих пор, – это проверить весь пул с этим регулярным выражением ([a-z0-9\-]+)\-([0-9]+) а затем я ([a-z0-9\-]+)\-([0-9]+) чтобы получить последний элемент, например это :

  $id = explode('-', $slug); $id = end($id); Route::get('{slug}', function($slug){ $id = explode('-', $slug); // 2389 $idOnly = array_pop($id); // macbook-pro $nameDashes = implode('-', $id); // It is possible to pass $idOnly and $nameDashes to `ProductController@getDetails` ? }) ->where('slug', '([a-z0-9\-]+)\-([0-9]+)'); 

Вы можете решить это, указав sc а также id :

 Route::get( '{sc}-{id}', function($sc, $id) { var_dump($sc); var_dump($id); exit; } ) ->where('sc', '.*?') ->where('id', '\d+'); 

В этом сценарии я лениво подбираю любое количество персонажей. Поскольку он ленив, он пройдет весь путь, пока не увидит, - за ним последуют цифры 1 +.

В результате получается регулярное выражение, аналогичное :

 ^ (?# start of URL) (.*?) (?# capture sc) - (?# delimiter) (\d+) (?# capture id) $ (?# end of URL)