[html-formfu] config_file_path
Geoffrey D. Bennett
g at netcraft.com.au
Sat Sep 13 14:37:52 BST 2008
Hi there,
I'm using Catalyst::Controller::HTML::FormFu, and specify
config_file_path => MyApp->path_to("forms"), which is fine for when I
use :FormConfig(), but when I use load_config_file(), things don't go
so well when running under Apache, since the cwd is "/" (the
HTML::FormFu doc says "relative paths are resolved from the current
working directory").
I found "__path_to()__" but that seems like a bit of a hack, and means
that your form config file path isn't centralised (having to specify
it in each form).
What do you think about moving config_file_path into HTML::FormFu?
Something like this:
------8<------8<------8<------8<------8<------8<------8<------8<-----
Index: lib/HTML/FormFu.pm
===================================================================
--- lib/HTML/FormFu.pm (revision 1204)
+++ lib/HTML/FormFu.pm (working copy)
@@ -70,6 +70,7 @@
default_model
tmp_upload_dir
params_ignore_underscore
+ config_file_path
_plugins
) );
@@ -1344,8 +1345,8 @@
---
load_config_file: ext.yml
-Like perl's C<open> function, relative-paths are resolved from the current
-working directory.
+Relative paths are resolved from the L</config_file_path> directory if
+it is set, otherwise from the current working directory.
If you're using the C<FormConfig> action controller in
L<Catalyst::Controller::HTML::FormFu>, see
@@ -1412,6 +1413,14 @@
before L</process> is called (otherwise, call L</process> again before
rendering the form).
+=head2 config_file_path
+
+Arguments: $directory_name
+
+L</config_file_path> defines where configuration files will be
+searched for, if an absolute path is not given to
+L</load_config_file>.
+
=head2 indicator
Arguments: $field_name
Index: lib/HTML/FormFu/ObjectUtil.pm
===================================================================
--- lib/HTML/FormFu/ObjectUtil.pm (revision 1204)
+++ lib/HTML/FormFu/ObjectUtil.pm (working copy)
@@ -470,6 +470,9 @@
my $config_any_method = $use_stems ? 'load_stems' : 'load_files';
for my $file (@filenames) {
+ if ($file !~ /^\// and $self->config_file_path) {
+ $file = $self->config_file_path . "/" . $file;
+ }
my $config = Config::Any->$config_any_method( {
$config_any_arg => [$file],
use_ext => 1,
Index: lib/HTML/FormFu/MultiForm.pm
===================================================================
--- lib/HTML/FormFu/MultiForm.pm (revision 1204)
+++ lib/HTML/FormFu/MultiForm.pm (working copy)
@@ -48,6 +48,7 @@
nested_subscript default_model
model_config auto_fieldset
params_ignore_underscore tmp_upload_dir
+ config_file_path
);
__PACKAGE__->mk_item_accessors qw(
------8<------8<------8<------8<------8<------8<------8<------8<-----
Then, Catalyst::Controller::HTML::FormFu can be simplified, just
passing config_file_path to HTML::FormFu:
------8<------8<------8<------8<------8<------8<------8<------8<-----
Index: lib/Catalyst/Controller/HTML/FormFu.pm
===================================================================
--- lib/Catalyst/Controller/HTML/FormFu.pm (revision 1204)
+++ lib/Catalyst/Controller/HTML/FormFu.pm (working copy)
@@ -189,6 +189,10 @@
$form->action( $action );
}
+ if ($config->{config_file_path}) {
+ $form->config_file_path($config->{config_file_path});
+ }
+
my $context_stash = $config->{context_stash};
$form->stash->{$context_stash} = $self->{c};
weaken( $form->stash->{$context_stash} );
@@ -476,8 +480,8 @@
=head2 config_file_path
-Location of the form config files, used when creating a form with the
-C<FormConfig> action controller.
+Location of the form config files, passed through to
+L<HTML::FormFu/config_file_path>.
Default Value: C<< $c->path_to( 'root', 'forms' ) >>
@@ -508,7 +512,7 @@
# default_action_use_path => 1 leads to:
$form->action = /foo/bar/1
-=haed2 model_stash
+=head2 model_stash
Arguments: \%stash_keys_to_model_names
Index: lib/Catalyst/Controller/HTML/FormFu/Action/MultiFormConfig.pm
===================================================================
--- lib/Catalyst/Controller/HTML/FormFu/Action/MultiFormConfig.pm (revision 1204)
+++ lib/Catalyst/Controller/HTML/FormFu/Action/MultiFormConfig.pm (working copy)
@@ -27,18 +27,14 @@
my $ext_regex = $config->{_file_ext_regex};
for my $file (@files) {
- my $filepath = defined $config->{config_file_path}
- ? $config->{config_file_path} ."/". $file
- : $file;
-
- $c->log->debug( __PACKAGE__ ." searching for file '$filepath'" )
+ $c->log->debug( __PACKAGE__ ." searching for file '$file'" )
if $c->debug;
if ( $file =~ m/ \. $ext_regex \z /x ) {
- $multi->load_config_file( $filepath );
+ $multi->load_config_file( $file );
}
else {
- $multi->load_config_filestem( $filepath );
+ $multi->load_config_filestem( $file );
}
}
Index: lib/Catalyst/Controller/HTML/FormFu/Action/FormConfig.pm
===================================================================
--- lib/Catalyst/Controller/HTML/FormFu/Action/FormConfig.pm (revision 1204)
+++ lib/Catalyst/Controller/HTML/FormFu/Action/FormConfig.pm (working copy)
@@ -27,18 +27,14 @@
my $ext_regex = $config->{_file_ext_regex};
for my $file (@files) {
- my $filepath = defined $config->{config_file_path}
- ? $config->{config_file_path} ."/". $file
- : $file;
-
- $c->log->debug( __PACKAGE__ ." loading config file '$filepath'" )
+ $c->log->debug( __PACKAGE__ ." loading config file '$file'" )
if $c->debug;
if ( $file =~ m/ \. $ext_regex \z /x ) {
- $form->load_config_file( $filepath );
+ $form->load_config_file( $file );
}
else {
- $form->load_config_filestem( $filepath );
+ $form->load_config_filestem( $file );
}
}
------8<------8<------8<------8<------8<------8<------8<------8<-----
(also, note the typo fixed above =haed2 -> =head2)
Regards,
--
Geoffrey D. Bennett, RHCE, RHCX mailto:g at netcraft.com.au
Senior Systems Engineer sip:g at netcraft.com.au
NetCraft Australia Pty Ltd http://www.netcraft.com.au/geoffrey/
More information about the HTML-FormFu
mailing list