Skip to content

Instantly share code, notes, and snippets.

@akzhan
Created October 29, 2012 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akzhan/3972047 to your computer and use it in GitHub Desktop.
Save akzhan/3972047 to your computer and use it in GitHub Desktop.
пример визарда
package FrontOffice::Controller::WizardSample;
=encoding windows-1251
=head1 NAME
FrontOffice::Controller::WizardSample
=cut
use Modern::Perl;
use Moose;
use namespace::autoclean;
BEGIN { extends 'FrontOffice::WizardBaseController'; }
__PACKAGE__->config(
wizard_name => 'sample',
first_state => 'welcome',
states => {
welcome => {
# проверка валидности сохраненных данных.
# используется только последний валидный шаг.
valid => sub {
my ( $c, $wiz ) = @_;
return true;
},
# проверка валидности принятых параметров.
# в случае ошибок показываем текущий шаг снова с ошибками в $c->flash.
validate => sub {
my ( $c, $wiz, $param ) = @_;
my @errors = ();
return @errors;
},
# сохранение принятых данных в модели.
save => sub {
my ( $c, $wiz, $param ) = @_;
return;
},
# получение следующего шага (может быть просто именем).
# если undef, выполнение мастера завершено.
next => sub {
my ( $c, $wiz ) = @_;
return 'success';
},
},
success => {
valid => sub {
my ( $c, $wiz ) = @_;
return true;
},
validate => sub {
my ( $c, $wiz, $param ) = @_;
my @errors = ();
return @errors;
},
save => sub {
my ( $c, $wiz, $param ) = @_;
return;
},
next => sub {
my ( $c, $wiz ) = @_;
$c->response->redirect( '/welcome_page' );
return;
},
},
},
);
sub base : PathPart( 'wizard/sample' ) {
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment