Как я могу сделать маршрутизатор сегмента разумно обрабатывать ограничения в ZF2?
Я использую маршрутизатор сегмента как дочерний элемент одного из моих основных маршрутов Literal в приложении ZF2 (в настоящее время использующем 2.3.5). Маршрутизатор должен уметь обрабатывать турецкие символы ввода, поступающие с URL. Моя первая попытка выглядела примерно так (как детский маршрут):
'book' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => 'kitap/:book[/]',
'constraints' => array(
'book' => '[a-zA-ZçÇşŞğĞıİöÖüÜ1-3.+ ]+',
),
),
),
В основном это работало для всего, что мне было нужно: заглавных и строчных букв, цифр до 3 и т. Д. Затем я заметил, что турецкая заглавная буква не принимается (I), поэтому я начал проверять. На самом деле он вообще не принимает турецкие символы, хотя остальные биты, кажется, обрабатываются правильно.
Даже используя \w+
не соответствует (локаль не установлена на турецкий язык?), но используется \S+
делает так, чтобы у маршрутизатора не было проблем с турецкими URL-адресами, это просто совпадение.
Я просмотрел исходный код маршрутизатора сегмента, и он, кажется, использует preg_match()
, который должен справиться с этим просто отлично. Что мне здесь не хватает?
Изменить: Этот вопрос о той же проблеме, но в маршрутизаторе Regex. Этот, еще более тесно связанный, имеет дело с той же проблемой в маршрутизаторе сегмента и является почти дубликатом, но он не решает мою проблему, поскольку продемонстрированный код относится к старой версии ZF2 и не является ни каплей совпадения, ни я. возможность портировать его для работы с обновленным вышестоящим модулем, который, кажется, обрабатывает вещи немного по-другому. Я также подал отчет об ошибке в верхнем течении, надеясь, что это там будет исправлено, но я все еще остаюсь без работающего модуля. Я счастлив создать заменяющий модуль для своего проекта с этой исправленной функцией, но не могу выяснить изменения, чтобы заставить его работать.