Revision f40865cb
Von Moritz Bunkus vor etwa 12 Jahren hinzugefügt
SL/Controller/Helper/GetModels.pm | ||
---|---|---|
3 | 3 |
use strict; |
4 | 4 |
|
5 | 5 |
use Exporter qw(import); |
6 |
our @EXPORT = qw(get_callback get_models); |
|
6 |
our @EXPORT = qw(get_models_url_params get_callback get_models);
|
|
7 | 7 |
|
8 | 8 |
use constant PRIV => '__getmodelshelperpriv'; |
9 | 9 |
|
... | ... | |
21 | 21 |
map { push @{ $registered_handlers{$_} }, $additional_handlers{$_} if $additional_handlers{$_} } keys %registered_handlers; |
22 | 22 |
} |
23 | 23 |
|
24 |
sub get_models_url_params { |
|
25 |
my ($class, $sub_name_or_code) = @_; |
|
26 |
|
|
27 |
my $code = (ref($sub_name_or_code) || '') eq 'CODE' ? $sub_name_or_code : sub { shift->$sub_name_or_code(@_) }; |
|
28 |
my $callback = sub { |
|
29 |
my ($self, %params) = @_; |
|
30 |
my @additional_params = $code->($self); |
|
31 |
return ( |
|
32 |
%params, |
|
33 |
(scalar(@additional_params) == 1) && (ref($additional_params[0]) eq 'HASH') ? %{ $additional_params[0] } : @additional_params, |
|
34 |
); |
|
35 |
}; |
|
36 |
|
|
37 |
push @{ $registered_handlers{callback} }, $callback; |
|
38 |
} |
|
39 |
|
|
24 | 40 |
sub get_callback { |
25 | 41 |
my ($self, %override_params) = @_; |
26 | 42 |
|
... | ... | |
102 | 118 |
|
103 | 119 |
=over 4 |
104 | 120 |
|
121 |
=item C<get_models_url_params $class, $sub> |
|
122 |
|
|
123 |
Register one of the controller's subs to be called whenever an URL has |
|
124 |
to be generated (e.g. for sort and pagination links). This is a way |
|
125 |
for the controller to add additional parameters to the URL (e.g. for |
|
126 |
filter parameters). |
|
127 |
|
|
128 |
The C<$sub> parameter can be either a code reference or the name of |
|
129 |
one of the controller's functions. |
|
130 |
|
|
131 |
The value returned by this C<$sub> must be either a single hash |
|
132 |
reference or a hash of key/value pairs to add to the URL. |
|
133 |
|
|
105 | 134 |
=item C<register_get_models_handlers $class, %handlers> |
106 | 135 |
|
107 | 136 |
This function should only be called from other controller helpers like |
Auch abrufbar als: Unified diff
GetModels-Controller-Helper: Weitere URL-Parameter für Callbacks übergeben können