Алиасы
Алиасы (псевдонимы) позволяют описывать заготовленные части пути
Установка псевдонима
$router->alias(':int', '\d+');
Установка нескольких псевдонимов
$router->aliases([
':float' => ':int\.?\d*', // алиас внутри алиаса
':action' => '(add|save|delete)',
]);
Вы можете составлять алиасы из алиасов, как в примере с :float выше
Предустановленные алиасы
[
':any' => '.*',
':int' => '[0-9]{1,}',
':id' => '[1-9]+\d*',
];
Использование в маршрутах
$router
->aliases([
':id' => '(:id)', // переоределяем :id алиас
':action' => '(add|save|delete)',
])
->get('/users/:id/:action', function ($user_id, $action) {
echo "$action user with id = $user_id";
})
->get('/company/:id/:action', function ($company_id, $action) {
echo "$action company with id = $company_id";
});
Наследование
Алиасы наследуются во вложенные роутеры
если они описаны выше вложенных роутеров
$router
->aliases([
':id' => '(:id)', // переоределяем :id алиас
':action' => '(add|save|delete)',
])
->map('/users/:id/:action', function () {
// использование алиаса :id во вложенном роутере
$this
->post('/posts/:id', function($user_id, $action, $post_id) {
echo "user ($user_id) $action post ($post_id)";
})
->post('/comments/:id', function($user_id, $action, $comment_id) {
echo "user ($user_id) $action comment ($comment_id)";
});
})
->get('/company/:id/:action', function ($company_id, $action) {
echo "$action company with id = $company_id";
});