Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/lib/Habr.pm b/lib/Habr.pm
- index c19efa9..dd8289f 100644
- --- a/lib/Habr.pm
- +++ b/lib/Habr.pm
- @@ -1,5 +1,6 @@
- package Habr;
- use Mojo::Base 'Mojolicious';
- +use utf8;
- # This method will run once at server start
- sub startup {
- @@ -11,8 +12,70 @@ sub startup {
- # Routes
- my $r = $self->routes;
- - # Normal route to controller
- + # Нормальная маршрутизация к контроллеру
- $r->route('/welcome')->to('example#welcome');
- +
- + # Или в формате хеша
- + $r->route('/welcome')->to(controller => 'example', action => 'welcome');
- +
- + # Также можно сразу положить что-нибудь в stash (тайник, заначка)
- + $r->route('/welcome')->to(controller => 'example', action => 'welcome', username => 'Mikhail');
- +
- + # Или в более компактной форме
- + $r->route('/welcome')->to('example#welcome', username => 'Mikhail');
- +
- + # Можно сделать заглушку и определить значение по умолчанию. Также username поместится в stash
- + # /welcome -> {username => 'Mikhail'}
- + # /welcome/ -> {username => 'Mikhail'}
- + # /welcome/Boris -> {username => 'Boris'}
- + $r->route('/welcome/:username')->to('example#welcome', username => 'Mikhail');
- +
- + # К заглушке можно применить регулярные выражения
- + $r->route('/page:number', number => qr/\d+/)->to('news#show');
- +
- + # Разные контроллеры для get и post-запросов
- + $r->route('/welcome')->via('get')->to('example#get');
- + $r->route('/welcome')->via('post')->to('example#post');
- +
- + # CallBack предназначен для выполнения кода в обход контроллера
- + $r->route('/say/:message')->to( cb => sub {
- + my $self = shift;
- + $self->render( text => $self->stash('message') );
- + }, message => 'Mojolicious rocks!' );
- +
- + # Можно сделать вложенные маршруты, чтобы убрать повторяющийся код
- + my $welcome = $r->route('/welcome')->to(controller => 'welcome');
- + $welcome->route('/Mikhail')->to(action => 'mikhail');
- + $welcome->route('/Boris')->to(action => 'boris');
- +
- + # Bridges также позволяет построить вложенные маршруты
- + # Но чтобы пройти по марштуру, bridge должен вернуть истину
- + # Это очень удобное средство для аутентификации
- + my $user = $r->bridge('/user')->to(cb => sub {
- + my $self = shift;
- +
- + # Authenticated
- + return 1 if $self->req->headers->header('X-Bender');
- +
- + # Not authenticated
- + return;
- + });
- + $user->route('/mail')->to(action => 'mail');
- +
- + # Не забывайте веселиться
- +
- + # Кириллические ЧПУ не проблема!
- + $r->route('/мультсериалы/зарубежные/футурама')->to( cb => sub {
- + my $self = shift;
- + $self->render( text => 'Футурама' );
- + });
- +
- + # Можно даже так!
- + $r->route('/☃')->to( cb => sub {
- + my $self = shift;
- + $self->render( text => '☃ — unicode snowman' );
- + });
- +
- }
- </pre></font></code></blockquote>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement