Search code examples
perlmojolicious

How to setup templates directory in mojolicious


In Mojolicious tutorial there is an explanation of putting templates into __DATA__ section of Perl files.

Suppose, we have templates directory: /var/www/site/templates/. How to setup templates directory to use it?

#!/usr/bin/env perl
use Mojolicious::Lite -signatures;
# maybe, I need to use custom renderer?
# use Mojolicious::Renderer;

get '/' => sub ($c) {
    # set templates path to /var/www/site/templates/? 
    # use login.html.ep file
    $c->render(template => 'login');
};

app->start;

Solution

  • You can access the renderer via the app object: $c->app->renderer. Use the paths() method to set your template directories.

    #!/usr/bin/env perl
    use Mojolicious::Lite -signatures;
    # maybe, I need to use custom renderer?
    # use Mojolicious::Renderer;
    
    get '/' => sub ($c) {
        # set templates path to /var/www/site/templates/? 
        # use login.html.ep file
        my $renderer =  $c->app->renderer;
        $renderer->paths(['/var/www/site/templates/']);
        $c->render(template => 'login');
    };
    
    app->start;