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')

Другие вопросы по тегам