2015-02-26 1 views
1

Я хочу создать несколько маршрутов с ограничениями по ролям. Что-то вроде этого:Как я могу получить данные по умолчанию из маршрута в mojolicious?

my $auth = $app->routes->under->to('auth#check'); 
$auth->get('/list')->to('some#list')->name('list'); 
$auth->get('/add')->to('some#add', roles => ['user', 'admin'])->name('add'); 

У меня нет никаких проблем с проверкой roles в after_dispatch крючке. Но я не могу получить доступ к этим данным, когда я пытаюсь создать ссылки для этих маршрутов.

Например, я guest по маршруту /list и хочу создать меню с доступными ссылками. Итак, я должен проверить roles с маршрута /add, чтобы решить показать эту ссылку или нет.

На данный момент я нашел только один способ получить данные по умолчанию от маршрута с именем:

app->routes->lookup('add')->pattern->defaults->{roles} 

И это выглядит как взломать. Как я могу сделать это правильно?

+0

Вы уверены, что используете стандартный, а не текущий? –

ответ

0

Вы правы. Этот метод для получения по умолчанию маршрута документирован here

my $defaults = $pattern->defaults; 
$pattern  = $pattern->defaults({foo => 'bar'});