Carl Franks wrote:
2008/11/28 Christoph Metz <[EMAIL PROTECTED]>:
Carl Franks wrote:
2008/11/28 Christoph Metz <[EMAIL PROTECTED]>:
using an Require constraint whith the "when" condition doesn't work fine
for
me :/
<element>
type Select
name kompetenzfeld_id
<constraint>
type Required
<when>
field extern
values 0
</when>
</constraint>
</element>
without the "<when>" part the Required constrain works correctly, maybe
the
syntax of my conf isn't correct, but this was the only variant,
(config-loader) formfu accepted so far...
That config seems to work, looking at a dumped $form, so the problem
must either be a misunderstanding of how it's meant to work, or a bug.
Note that the when() doesn't yet support nested params, such as "foo.bar".
Can you write a failing test file, that demonstrates what you expect
to happen, to help start to narrow it down?
Cheers,
Carl
_______________________________________________
HTML-FormFu mailing list
HTML-FormFu@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
thanks carl,
the radio-button and the field asking for it with "when()" are nested in 2
divs... damn. Are there any other possibilities to do this kind of stuff,
without validating each param by myself AND with the ability to access these
magic method across blocks, like some divs?
If it's just normal nested Blocks without a nested_name set, then it
should be fine.
It's only nested-params that don't work - that's when an outer block
has a nested_name(), such as:
type: Block
nested_name: foo
elements:
- type: Text
name: bar
Which would cause the Text field to actually get the name "foo.bar"
Carl
_______________________________________________
HTML-FormFu mailing list
HTML-FormFu@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu
so, i have created a testfile for the problem, i am using FormFu inside
the catalyst-framework, Catalyst::Controller::HTML::FormFu is Version
0.03004, Catalyst is version 5.7014. so firstly here is the controller:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
package MyApp::Controller::test;
use strict;
use warnings;
use base qw(Catalyst::Controller::HTML::FormFu);
sub index : Local FormConfig('test/index2.conf'){
my ( $self, $c ) = @_;
my $form = $c->stash->{form};
if ($form->submitted_and_valid){
$c->stash->{message} = "Form sumitted and valid!";
}
$c->stash->{template} = 'test/index.tt2';
}
1;
---------------------------------------------------------------------------------------------------------------------------------------------------------------
the Formfu conf file:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
indicator submit
<element>
type Radio
name additional_infos
value 1
label yes
</element>
<element>
type Radio
name additional_infos
value 0
label no
checked checked
</element>
<element>
type Text
name additional
<constraint>
type Required
<when>
field additional_infos
values 1
</when>
</constraint>
</element>
<element>
type Submit
name submit
value submit
</element>
---------------------------------------------------------------------------------------------------------------------------------------------------------------
the template:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
[%- META title = "test" -%]
[% form %]
---------------------------------------------------------------------------------------------------------------------------------------------------------------
the catalyst-debug form-dump:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
form => bless({
_elements => [
bless({
_constraints => [],
_deflators => [],
_errors => [],
_filters => [],
_inflators => [],
_plugins => [],
_transformers => [],
_validators => [],
attributes => {},
comment_attributes => {},
container_attributes => {},
container_tag => "div",
field_filename => "input_tag",
field_type => "radio",
filename => "input",
is_field => 1,
label => "yes",
label_attributes => {},
label_filename => "label",
label_tag => "label",
name => "additional_infos",
parent => 'fix',
reverse_multi => 1,
stash => {},
type => "Radio",
value => 1,
}, "HTML::FormFu::Element::Radio"),
bless({
_constraints => [],
_deflators => [],
_errors => [],
_filters => [],
_inflators => [],
_plugins => [],
_transformers => [],
_validators => [],
attributes => { checked =>
"checked" },
comment_attributes => {},
container_attributes => {},
container_tag => "div",
field_filename => "input_tag",
field_type => "radio",
filename => "input",
is_field => 1,
label => "no",
label_attributes => {},
label_filename => "label",
label_tag => "label",
name => "additional_infos",
parent => 'fix',
reverse_multi => 1,
stash => {},
type => "Radio",
value => 0,
}, "HTML::FormFu::Element::Radio"),
bless({
_constraints => [
bless({
"not" => 0,
parent => 'fix',
type =>
"Required",
when => { field =>
"additional_infos", "values" => 1 },
},
"HTML::FormFu::Constraint::Required"),
],
_deflators => [],
_errors => [],
_filters => [],
_inflators => [],
_plugins => [],
_transformers => [],
_validators => [],
attributes => {},
comment_attributes => {},
container_attributes => {},
container_tag => "div",
field_filename => "input_tag",
field_type => "text",
filename => "input",
is_field => 1,
label_attributes => {},
label_filename => "label",
label_tag => "label",
name => "additional",
parent => 'fix',
stash => {},
type => "Text",
}, "HTML::FormFu::Element::Text"),
bless({
_constraints => [],
_deflators => [],
_errors => [],
_filters => [],
_inflators => [],
_plugins => [],
_transformers => [],
_validators => [],
attributes => {},
comment_attributes => {},
container_attributes => {},
container_tag => "div",
field_filename => "input_tag",
field_type => "submit",
filename => "input",
is_field => 1,
label_attributes => {},
label_filename => "label",
label_tag => "label",
name => "submit",
parent => 'fix',
retain_default => 1,
stash => {},
type => "Submit",
value => "submit",
}, "HTML::FormFu::Element::Submit"),
],
_models => [],
_output_processors => [],
_plugins => [],
_processed_params => {},
_valid_names => [],
attributes => { action => "", method => "post" },
auto_error_class => "error_%s_%t",
auto_error_message => "form_%s_%t",
config_callback => { plain_value => sub { "???" } },
default_args => { constraints => {}, elements => {} },
default_model => "DBIC",
filename => "form",
indicator => "submit",
input => {},
languages => ["en"],
localize_class => "HTML::FormFu::I18N",
query => 'fix',
query_type => "Catalyst",
render_method => "string",
stash => { context => 'fix' },
submitted => "",
tt_args => 'fix',
tt_module => "Template",
}, "HTML::FormFu"),
template => "test/index.tt2",
};
$a->{"__InstancePerContext_159122152"}{c}{stash} = $a;
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0]{_children}[0]{_parent} =
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0];
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0]{_children}[1]{_parent} =
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0];
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0]{_children}[2]{_parent} =
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0];
$a->{"__InstancePerContext_159122152"}{c}{stats}{tree} =
$a->{"__InstancePerContext_159122152"}{c}{stats}{stack}[0];
$a->{form}{_elements}[0]{parent} = $a->{form};
$a->{form}{_elements}[1]{parent} = $a->{form};
$a->{form}{_elements}[2]{_constraints}[0]{parent} = $a->{form}{_elements}[2];
$a->{form}{_elements}[2]{parent} = $a->{form};
$a->{form}{_elements}[3]{parent} = $a->{form};
$a->{form}{query} = $a->{"__InstancePerContext_159122152"}{c}{request};
$a->{form}{stash}{context} = $a->{"__InstancePerContext_159122152"}{c};
$a->{form}{tt_args} =
$a->{"__InstancePerContext_159122152"}{_html_formfu_config}{constructor}{tt_args};
$a;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
the error:
indifferent i am chossing the radio button for "yes" or "no" the
"when()" condition seems to be ignored, the method
"submitted_and_valid()" never returns true for the form in this case, if
i am using the Required-constraint without the when() condition all
works fine.
Greets :)
_______________________________________________
HTML-FormFu mailing list
HTML-FormFu@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu