John Beppu > Squatting-0.41 > Squatting::View

Download:
Squatting-0.41.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Source   Latest Release: Squatting-0.70

NAME ^

Squatting::View - default view class for Squatting

SYNOPSIS ^

  package App::Views;
  use Squatting 'views';
  our @V = (
    V(
      'html',
      layout => sub {
        my ($self, $v, @content) = @_;
        "(header @content footer)";
      },
      home => sub {
        my ($self, $v) = @_;
        "Hello, $v->{name}";
      },
      _ => sub {
        my ($self, $v) = @_;
        "You tried to render $self->{template} which was not defined.";
      },
      arbitrary_data => [ { is => 'ok' }, 2 ],
    )
  );

DESCRIPTION ^

In Squatting, views are objects that contain many templates. Templates are represented by subroutine references that will be installed as methods of a view object. The job of a template is to take a hashref of variables and return a string.

API ^

General Methods

$view = Squatting::View->new($name, %methods)

The constructor takes a name and a hash of attributes and coderefs. Note that the name must be unique within the package the view is defined.

$view->name

This returns the name of the view.

$view->headers

This returns a hashref of the outgoing HTTP headers.

Template Methods

$view->$template($v)

Any coderef that was given to the constructor may be called by name. Templates should be passed in a hashref ($v) with variables for it to use to generate the final output.

$view->layout($v, @content)

If you define a template named "layout", it'll be used to wrap the content of all templates whose name do not begin with "_". You can use this feature to provide standard headers and footers for your pages.

$view->_($v)

If you define a template named "_", this will act as a catch-all that can be asked to render anything that wasn't explicitly defined. It's like our version of AUTOLOAD().

NOTE: You can find out what they tried to render by inspecting $self->{template}.

SEE ALSO ^

Squatting, Squatting::Controller