Настройка регулярного выражения для PHP Router
Необходимо реализовать правила роутинга (перенаправления) для следующих URL:
Обычные ссылки для перехода
- test.com
- test.com/page
- test.com/admin
- test.com/admin/page
Ссылки с указанием какого-то языка (ua|ru|eng|de)
- test.com/eng
- test.com/eng/page
- test.com/eng/admin
- test.com/eng/admin/page
Вот код который я накидал:
$patterns = array(
':lang' => 'ua|ru|eng|de'
);
$router->pattern($patterns);
$router->get('/:lang?/:all?', function($lang = 'eng') {
echo $lang;
$_COOKIE['lang'] = $lang;
});
$router->get('/', function() {
return 'Front';
});
$router->get('/page', function() {
return 'Front - page';
});
$router->group('admin', function($router) {
$router->get('/', function() {
return 'Admin';
});
$router->get('/page', function() {
return 'Admin - page';
});
});
Задача заключается в том, чтоб при получении ссылки с указанием языка необходимо занести данный язык в куки и провести пользователя на нужную страницу. Сейчас же если указывать язык в ссылке, то срабатывает только функция $router->get('/:lang?/:all?', function($lang = 'eng') и пользователь на конечную страницу не отправляется, записываются только куки. Как решить такую проблему?
Использую библиотеку PHP Router.
P.s. можно конечно в каждом условии отлавливать язык, но хотелось бы, чтоб это происходило в одном месте без дублирования.