[dancer-users] Question about Perl Dancer Framework

Sawyer X xsawyerx at gmail.com
Sat Sep 6 23:37:35 BST 2014


Hi Jean-Marie.

Welcome! :)

Let's go over the code you showed.

> get '/index' => sub { template 'index' };

That will declare a path "/index" for a GET request which will render a
template called (if you're using the default templating framework) "index.tt".
So far so good.

> get '/' => sub { template 'login' };

When someone goes to the main page, render 'login.tt'.

> get 'test' => sub {
>     template 'test';
> };

You probably want to change this to "get '/test'" instead of "get 'test'".
Paths should begin with "/", almost always.

>                #return '<script> document.location("./views/test.tt
");</script>';

In this case, you want to simply use "redirect" keyword which would do this
for you:
get '/test' => sub {
    redirect "/"; # redirect to main page
};

In your example, you're trying to redirect to "./views/test.tt" which is a
file. HTTP redirects are for *paths*, not *files*.

If you want people who go to "/wrong/place" to go to "/test" which renders
the right template ("test.tt"), you would write this:
get '/wrong/place => sub { redirect '/test' };
get '/test => sub { template 'test'; }

Does this help?
S.

On Mon, Sep 1, 2014 at 6:45 PM, jean-marie.bourbon at armaturetech.com <
jean-marie.bourbon at armaturetech.com> wrote:

>
>
> On 09/01/2014 03:56 AM, jean-marie.bourbon at armaturetech.com wrote:
> > Hi guys!
> >
> > I recently tried to build my own web application using Dancer but I'm a
> basic perl developer and I have any interrogations about this framework.
> >
> > I've first tried to build a login page based on your "navbar_login"
> example.
> > Once logged in I try to call another page named "test" but it seems to
> not work (I don't know how to call my page and how Dancer work exactly ..
> to be honest :-(  . )
> > :
> > I have a login.pm module, main.tt (in views/layout/) index.tt and
> test.tt in views.
> > Im my login.pm I have declared my routes as following:
> >
> > get '/index' => sub { template 'index' };
> >
> > get '/' => sub { template 'login' };
> >
> > get 'test' => sub {
> >     template 'test';
> > };
> >
> > So, once logged in I try (and fail) to call my page like this:
> >
> >
> > elsif($password eq "12345") {
> >                #print "ok";
> >                #return '<script> document.location("./views/test.tt
> ");</script>';
> >                #return  template 'examples/photo_carousel';#  'index';
> >                #my @animals = qw/dogs cats camels mooses vogons/;
> >                return template  'test' => {
> >                        show => "launching test.tt",
> >                };
> >                #session $username => params->{$username};
> >                #redirect params ->{'index'};
> >
> >                        #show_
> >                }
> >
> > Fail also with redirect parameter .. But why and how to call my test
> page ?
> > I don't understand why it doesn't work, can you explain me please ?
> >
> > Thanks a lot !
> >
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20140907/5b92406e/attachment.html>


More information about the dancer-users mailing list