Я работаю над приложением ZF2, где мне нужен маршрут, как это:ZF2 сегментирован маршрут ограничение REGEX
'storage-deliver' => array(
'type' => 'Segment',
'options' => array(
'route' => '/storage/:uuid/:path',
'constraints' => array(
'uuid' => '[a-zA-Z0-9-]*',
'path' => '[a-zA-Z0-9-_\./\+]*'
),
'defaults' => array(
'controller' => 'StorageController',
'action' => 'deliver',
)
)
)
Маршрут должен быть в состоянии соответствовать любому маршруту позади uuid
ограничения.
Примеры:
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/some.file
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/an/undefined/depth/path/to/some.file
Я знаю, что UUID ограничение не является правильным, но это не имеет отношения к моей проблеме прямо сейчас. Задачей является заданное ограничение path
. Он должен быть в состоянии соответствовать тому, что выглядит в остальной части данного URL.
До сих пор данное определение [a-zA-Z0-9-_\./\+]*
работает (по крайней мере, для примеров, которые я использую), но я уверен, что есть способ сделать это намного лучше (и способ, который действительно соответствует всем действительным возможностям !).
Где-то здесь я нашел следующий пример маршрута:
/storage/:uuid/:path{-}
Сначала все было хорошо выглядеть, но path
не совпадают во всех случаях.
Любая помощь приветствуется!
Спасибо!
Если путь должен соответствовать чему-либо, замените шаблон на '. *' Или '. +' Или (если не должно быть ничего, кроме '/') - '[^ /] *' –
Nice! Работает так, как ожидалось. Сначала я попробовал '[\ s \ S] *', который также работает, но '. *' Кажется намного понятнее. Спасибо за это. Преобразуйте свой комментарий в ответ и чтобы я мог его принять! :) – Marco
Я не уверен, правильно ли прочитал вопрос, но зачем использовать какое-либо ограничение в части «путь»? Разве ваша цель не ограничена? – Sebi