Altorouter многоязычная маршрутизация
Можно ли использовать Altorouter для создания многоязычной настройки маршрутизации? Я хотел бы отправить переменную с целевым файлом (чтобы он отображал различное содержимое при просмотре), например -
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
Но этот пятый параметр недоступен. Есть ли обходной путь для этого?
2 ответа
Вы можете использовать сопоставление с шаблоном в URL для достижения этого, если ваши языковые URL достаточно регулярны.
Согласно документации, определяющей маршрут
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')
будет захватывать 'th'
в $lang
когда '/th/work/sample'
URL ударил. Если вам нужно более сложное сопоставление с образцом, можно также указать пользовательские регулярные выражения.
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
Но этот пятый параметр недоступен. Есть ли обходной путь для этого?
Это потому, что функция карты просто не поддерживает пятый параметр.
public function map($method, $route, $target, $name = null)
исходный код AltoRouter.php: карта
Ты можешь позвонить match
Функция, передающая исходный маршрут, если вы можете каким-то образом перехватить и заставить свой код работать до маршрутизатора. Функция соответствия возвращает вам имя маршрута. Но это означает, что вы создаете именованные маршруты для каждого языка, а затем вы начнете ценить решение, предоставляемое @gbe
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')