Многоязычная маршрутизация 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: map
можно назвать match
функция, проходящая по исходному маршруту, Если вы можете каким-то образом перехватить и заставить свой код работать перед маршрутизатором. Этот функция match возвращает вам имя маршрута. Но это означает, что вы создаете именованные маршруты для каждого языка, а затем вы начнете ценить решение, предоставленное @gbe
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')