Настройка регулярного выражения для 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. можно конечно в каждом условии отлавливать язык, но хотелось бы, чтоб это происходило в одном месте без дублирования.


Ответы (0 шт):