Catalyst-Controller-FormBuilder
view release on metacpan or search on metacpan
lib/Catalyst/Controller/FormBuilder/Action.pm view on Meta::CPAN
my $fbdir = $self->_form_path($controller, $c);
# Attempt to autoload config and template files
# Cleanup suffix to allow ".fb" or "fb" in config
my $fbsuf = exists( $config->{form_suffix} ) ? $config->{form_suffix} : 'fb';
$fbsuf =~ s/^\.*/./ if $fbsuf;
my $fbfile = "$name$fbsuf";
$c->log->debug("Form ($name): Looking for config file $fbfile")
if $c->debug;
# Look for files relative to our current action url (/books/edit)
for my $dir ( @$fbdir ) {
my $conf = File::Spec->catfile( $dir, $fbfile );
if ( -f $conf && -r _ ) {
$c->log->debug("Form ($name): Found form config $conf")
if $c->debug;
return $conf;
}
}
my $err = sprintf( "Form (%s): Can't find form config $fbfile in: %s",
$name, join( ", ", @$fbdir ) );
if ( $self->_attr_params->[0] ) {
$c->log->error($err);
$c->error($err);
}
else {
$c->log->debug($err) if $c->debug;
}
return;
}
sub _form_path {
my ( $self, $controller, $c ) = @_;
my $config = $controller->config->{'Controller::FormBuilder'} || {};
my $fbdir = [ File::Spec->catfile( $c->config->{home}, 'root', 'forms' ) ];
if ( my $dir = $config->{form_path} ) {
$fbdir = ref $dir ? $dir : [ split /\s*:\s*/, $dir ];
}
return $fbdir;
}
sub execute {
my $self = shift;
my ( $controller, $c ) = @_;
return $self->maybe::next::method(@_)
unless exists $self->attributes->{ActionClass}
&& $self->attributes->{ActionClass}[0] eq
$controller->_fb_setup->{action};
my $form = $self->_setup_form(@_);
Scalar::Util::weaken($form->{c});
$controller->_formbuilder($form);
$self->maybe::next::method(@_);
$controller->_formbuilder($form); # keep the same form in case of forwards
$self->setup_template_vars( @_ );
}
1;
( run in 1.562 second using v1.01-cache-2.11-cpan-39bf76dae61 )