GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Squatting::View(3) User Contributed Perl Documentation Squatting::View(3)

Squatting::View - default view class for Squatting

  package App::Views;
  use Squatting ':views';
  our @V = (
    V(
      'example',
      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 ],
    )
  );

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

Typically, the hashref of variables will be the same as what's in "$controller->v". This is important to note, because if you want a session variable in "$controller->state" to affect the template, you have to put it in "$controller->v".

$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.

$content = $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.

$content = $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.

$content = $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}".

This feature is useful when you're using a file-based templating system like Tenjin or Template Toolkit, and you don't want to write a template sub for every single template. Instead, you can make "$self->{template}" correspond to a file on disk.

$view->{$template} = \&coderef

You are allowed to directly replace the template coderefs with your own. The most common reason you'd do this would be to replace an app's default layout with your own.

  $view->{layout} = sub {
    my ($self, $v, $content) = @_;
    # ...
  };

Squatting, Squatting::Controller
2013-01-23 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.