Controller-Base: Methode für HTTP-Redirect implementiert
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Dec 2010 15:21:34 +0000 (16:21 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Dec 2010 15:21:34 +0000 (16:21 +0100)
SL/Controller/Base.pm

index c655e72..a2a380b 100644 (file)
@@ -4,6 +4,10 @@ use parent qw(Rose::Object);
 
 use List::Util qw(first);
 
+#
+# public/helper functions
+#
+
 sub parse_html_template {
   my $self   = shift;
   my $name   = shift;
@@ -26,6 +30,17 @@ sub url_for {
   return "controller.pl?${query}";
 }
 
+sub redirect_to {
+  my $self = shift;
+  my $url  = $self->url_for(@_);
+
+  print $::cgi->redirect($url);
+}
+
+#
+# private functions -- for use in Base only
+#
+
 sub _run_action {
   my $self   = shift;
   my $action = "action_" . shift;
@@ -169,6 +184,12 @@ Usage from a template might look like this:
 
   <a href="[% SELF.url_for(controller => 'Message', action => 'new', recipient_id => 42) %]">create new message</a>
 
+=item redirect_to %url_params
+
+Redirects the browser to a new URL by outputting a HTTP redirect
+header. The URL is generated by calling L</url_for> with
+C<%url_params>.
+
 =back
 
 =head2 PRIVATE FUNCTIONS