The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojolicious::Plugin::ViewBuilder - a Mojolicious plugin that allows to chain templates generated by other plugins

SYNOPSIS

  #Load the plugin

  # - Mojolicious
  $self->plugin('ViewBuilder');

  # - Mojolicious::Lite
  plugin 'ViewBuilder';

  # then, use it in your template, declare a new area, labeled "profile"
  <%= pluggable_view 'profile' %>

  # now, in the plugin, that will attach the new helper to the view

  sub register {
      my ( $self, $app, $conf ) = @_;

      $app->helper(
          test => sub {
              shift->render_to_string( "test", some_data => 1 );
          }
      );

      #attach the test helper to the view "profile"
      $app->add_view( "profile", "test" );

  }
  1;

  # or you can append a callback

  sub register {
      my ( $self, $app, $conf ) = @_;
      $app->add_view(
          profile => sub {
              shift->render_to_string( "test", some_data => 42 );
          }
      );
  }
  1;
  __DATA__
  @@ test.html.ep
  huuuray!
  % if( stash("some_data") and stash("some_data")==42){
   double it!
  % }

DESCRIPTION

Mojolicious::Plugin::ViewBuilder is a Mojolicious plugin. Chains templates generated by other plugins, associating them within the view. This is useful only if your workflow is to reap into little pieces the webapp (e.g. in plugins)

METHODS

Mojolicious::Plugin::ViewBuilder inherits all methods from Mojolicious::Plugin and implements the following new ones.

pluggable_view

  <%=pluggable_view "profile" %>

Will render all the attached plugin associated within the view

add_view

  $app->add_view("view","helper");
  $app->add_view(view => sub{shift->render_to_string("Hello mojolicious!")});

Attach the "helper" within the "view"

LICENSE

Copyright (C) mudler.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

mudler <mudler@dark-lab.net>