ASP4x-Linker
view release on metacpan or search on metacpan
lib/ASP4x/Linker.pm view on Meta::CPAN
{
my ($s, $args) = @_;
my $vars = $s->vars( $args, 1 );
no warnings 'uninitialized';
my ($uri) = split /\?/, $s->base_href;
my $context = ASP4::HTTPContext->current;
my $server = $context->server;
my @inputs = map {qq(<input type="hidden" name="@{[ $server->URLEncode( $_ ) ]}" value="@{[ $server->URLEncode( $vars->{$_} ) ]}" />)}
keys %$vars;
return join "\n", @inputs;
}# end hidden_fields()
sub vars
{
my ($s, $args) = @_;
my @parts = ( );
lib/ASP4x/Linker.pm view on Meta::CPAN
=item * The incoming form data from the original request
=item * Individually-set values for each widget in the collection.
=item * Any properties provided as an argument to C<uri()>.
=back
=head2 hidden_fields( [$properties] )
Returns a string of XHTML hidden input fields (<input type="hidden" name="$name" value="$value" />).
Useful if your persistence logic involves repeated form submissions rather than hyperlinks.
The C<$properties> argument is the same as in the C<uri()> method.
=head2 vars( [$properties] )
Returns a hashref representing the intersect of all widgets' names and attributes.
Supposing you setup your linker like this:
t/010-basic/050-hidden-fields.t view on Meta::CPAN
attrs => [qw( page_number page_size )]
);
$linker->add_widget(
name => 'albums',
attrs => [qw( page_number page_size )]
);
is
$linker->hidden_fields() =>
q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="" />
<input type="hidden" name="artists.page_size" value="" />),
"Hidden Fields look right";
$linker->widget('albums')->set( page_number => 1 );
is
$linker->hidden_fields() =>
q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="1" />
<input type="hidden" name="artists.page_size" value="" />),
"Hidden Fields look right";
is
$linker->hidden_fields() =>
q(<input type="hidden" name="albums.page_size" value="" />
<input type="hidden" name="artists.page_number" value="" />
<input type="hidden" name="albums.page_number" value="" />
<input type="hidden" name="artists.page_size" value="" />),
"Auto-reset works";
my $args = {
albums => { page_size => 20, page_number => 4 },
artists => { page_size => 5, page_number => 10 }
};
is
$linker->hidden_fields($args) =>
q(<input type="hidden" name="albums.page_size" value="20" />
<input type="hidden" name="artists.page_number" value="10" />
<input type="hidden" name="albums.page_number" value="4" />
<input type="hidden" name="artists.page_size" value="5" />),
"Auto-reset works";
( run in 0.773 second using v1.01-cache-2.11-cpan-df04353d9ac )