Egg::Dispatch::Standard - Dispatch of Egg standard.
package MyApp::Dispatch; use Dispatch::Standard; # If HASH is used for the key, the refhash function is used. Egg->dispatch_map( refhash( # 'ANY' matches to the method of requesting all. # The value of label is used with page_title. { ANY => '_default', label => 'index page.' }=> sub { my($e, $dispatch)= @_; $e->template('document/default.tt'); }, # Empty CODE decides the template from the mode name that becomes a hit. # In this case, it is 'help.tt'. help => sub { }, # When the request method is only GET, 'GET' is matched. { GET => 'bbs_view', label => 'BBS' } => sub { my($e, $dispatch)= @_; .... bbs view code. }, # When the request method is only POST, 'POST' is matched. { POST => 'bbs_post', label => 'BBS Contribution.' } => sub { my($e, $dispatch)= @_; .... bbs post code. }, # 'A' is an alias of 'ANY'. { A => 'blog', label => 'My BLOG' }=> # The refhash function for remembrance' sake when you use HASH for the key. refhash( # Prior processing can be defined. _begin => sub { my($e, $dispatch)= @_; ... blog begin code. }, # 'G' is an alias of 'GET'. # The regular expression can be used for the action. A rear reference is the # third argument that extends to CODE. { G => qr{^article_(\d{4}/\d{2}/\d{2})}, label => 'Article' } => sub { my($e, $dispatch, $parts)= @_; ... data search ( $parts->[0] ). }, # 'P' is an alias of 'POST'. { 'P' => 'edit', label => 'BLOG Edit Form.' } => sub { my($e, $dispatch)= @_; ... edit code. }, # Processing can be defined after the fact. _end => sub { my($e, $dispatch)= @_; ... blog begin code. }, ), ) );
It is dispatch of the Egg standard.
Dipatti is processed according to the content defined in 'dispatch_map'.
Dipatti of the layered structure is treatable.
The value of the point where the action the final reaches should be CODE reference.
Objec of the project and the handler object of dispatch are passed for the CODE reference.
Besides, when the key to the name of 'default_mode' exists in the retrieval hierarchy, it matches it to it if the matched action is not found.
It corresponds to the key to the HASH form by using the refhash function. see Tie::RefHash.
Label is set, and the request method can be limited and it match it to the request by using the key to the HASH form.
The regular expression can be used for the key. As a result, it is possible to correspond to a flexible request pattern. Moreover, it is passed to the third argument of the CODE reference by the list if there is a rear reference. However, a rear reference can obtain only the one that matched to oneself. In a word, what matched by a shallower hierarchy cannot be referred to.
qr{^baz_(.+)}=> { # <- This cannot be referred to. # It only has to pull it out for oneself by using $e->request->path etc. qr{^boo_(.+)}=> sub { # <- Naturally, this can be referred to. my($d, $e, $p)= @_; }, },
When '_begin' key is defined, prior is processed.
It processes it after the fact when '_end' key is defined.
To the same hierarchy as the action that becomes a hit when neither '_begin' nor '_end' key are found. It looks for the one of a shallower hierarchy. To make the search stopped on the way, an empty CODE reference is defined somewhere of the hierarchy.
hoge => { hoo => { baa => { match => sub {}, }, }, # It stops here. _begin => sub {}, _end => sub {}, },
It is a function exported to the controller and the dispatch class of the project.
It is Tie::RefHash as for received HASH. After Tie is done, the content is returned by the HASH reference.
Whenever the key to the HASH form is set to 'dispatch_map', it is made by way of this function.
It doesn't go well even if the HASH reference is passed to this function. Please pass it by a usual HASH form.
my $hashref = refhash ( { A => '_default', label=> 'index page.' } => sub {}, { A => 'help', label=> 'help page.' } => sub {}, );
Egg::Dispatch has been succeeded to.
The Egg::Dispatch::Standard::handler object is returned.
my $d= $e->dispatch;
The parameter name to decide the action of dispatch is setup.
Egg->mode_param('mode');
If the access control of the URI base is done, it is not necessary to set it.
The value in which the list of the matched action ties by '/' delimitation is returned.
The list of the matched action is returned by the ARRAY reference.
When the figure is given, the corresponding value is returned.
Egg::Release, Egg::Dispatch, Tie::RefHash,
Masatoshi Mizuno <lushe@cpan.org>
Copyright (C) 2008 Bee Flag, Corp. <http://egg.bomcity.com/>.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
To install Egg::Release, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Egg::Release
CPAN shell
perl -MCPAN -e shell install Egg::Release
For more information on module installation, please visit the detailed CPAN module installation guide.