Revision b4e12203
Von Sven Schöling vor fast 7 Jahren hinzugefügt
SL/Controller/Base.pm | ||
---|---|---|
29 | 29 |
my %params = ref($_[0]) eq 'HASH' ? %{ $_[0] } : @_; |
30 | 30 |
my $controller = delete($params{controller}) || $self->controller_name; |
31 | 31 |
my $action = $params{action} || 'dispatch'; |
32 |
my $fragment = delete $params{hash} // delete $params{fragment} // '';
|
|
32 |
my $fragment = delete $params{fragment};
|
|
33 | 33 |
|
34 | 34 |
my $script; |
35 | 35 |
if ($controller =~ m/\.pl$/) { |
... | ... | |
42 | 42 |
|
43 | 43 |
my $query = join '&', map { uri_encode($_->[0]) . '=' . uri_encode($_->[1]) } @{ flatten(\%params) }; |
44 | 44 |
|
45 |
return "${script}?${query}" . ($fragment ? "#$fragment" : ''); |
|
45 |
return "${script}?${query}" . (defined $fragment ? "#$fragment" : '');
|
|
46 | 46 |
} |
47 | 47 |
|
48 | 48 |
sub redirect_to { |
... | ... | |
529 | 529 |
The action to call is given by C<$params{action}>. It defaults to |
530 | 530 |
C<dispatch>. |
531 | 531 |
|
532 |
If C<$params{fragment}> is present, it's used as the fragment of the resulting |
|
533 |
URL. |
|
534 |
|
|
532 | 535 |
All other key/value pairs in C<%params> are appended as GET parameters |
533 | 536 |
to the URL. |
534 | 537 |
|
Auch abrufbar als: Unified diff
Controller::Base::url_for: nur noch fragment erlauben
Mit mosu darüber gesprochen, und folgende Argumente kamen:
jetzt hash und fragment in einer flachen Argumentliste übergeben
werden. Das ist aber historisch gewachsen und wird jetzt nicht
geändert. Ziel sollte es aber sein, dass potentielle Kollisionen
selten passieren.
Blöderweise nennt Javascript das document.location.hash, und so ist
das im Gedächtnis geblieben. Da aber hash eh schon in Perl und
Programmieren extrem überladen ist mit Bedeutungen ist fragment hier
der etwas weniger miese Begriff.