template::view(3)
NAME
Template::View - customised view of a template processing
context
SYNOPSIS
# define a view
[% VIEW view
# some standard args
prefix => 'my_',
suffix => '.tt2',
notfound => 'no_such_file'
...
# any other data
title => 'My View title'
other_item => 'Joe Random Data'
...
%]
# add new data definitions, via 'my' self reference
[% my.author = "$abw.name <$abw.email>" %]
[% my.copy = "© Copyright 2000 $my.author"
%]
# define a local block
[% BLOCK header %]
This is the header block, title: [% title or my.title %]
[% END %]
[% END %]
# access data items for view
[% view.title %]
[% view.other_item %]
# access blocks directly ('include_naked' option, set
by default)
[% view.header %]
[% view.header(title => 'New Title') %]
# non-local templates have prefix/suffix attached
[% view.footer %] # => [% INCLUDE my_footer.tt2 %]
# more verbose form of block access
[% view.include( 'header', title => 'The Header Title'
) %]
[% view.include_header( title => 'The Header Title' )
%]
# very short form of above ('include_naked' option,
set by default)
[% view.header( title => 'The Header Title' ) %]
# non-local templates have prefix/suffix attached
[% view.footer %] # => [% INCLUDE my_footer.tt2 %]
# fallback on the 'notfound' template
('my_no_such_file.tt2')
# if template not found
[% view.include('missing') %]
[% view.include_missing %]
[% view.missing %]
# print() includes a template relevant to argument
type
[% view.print("some text") %] # type=TEXT, template='text'
[% BLOCK my_text.tt2 %] # 'text' with prefix/suffix
Text: [% item %]
[% END %]
# now print() a hash ref, mapped to 'hash' template
[% view.print(some_hash_ref) %] # type=HASH, template='hash'
[% BLOCK my_hash.tt2 %] # 'hash' with prefix/suffix
hash keys: [% item.keys.sort.join(', ')
[% END %]
# now print() a list ref, mapped to 'list' template
[% view.print(my_list_ref) %] # type=ARRAY, template='list'
[% BLOCK my_list.tt2 %] # 'list' with prefix/suffix
list: [% item.join(', ') %]
[% END %]
# print() maps 'My::Object' to 'My_Object'
[% view.print(myobj) %]
[% BLOCK my_My_Object.tt2 %]
[% item.this %], [% item.that %]
[% END %]
# update mapping table
[% view.map.ARRAY = 'my_list_template' %]
[% view.map.TEXT = 'my_text_block' %]
# change prefix, suffix, item name, etc.
[% view.prefix = 'your_' %]
[% view.default = 'anyobj' %]
...
DESCRIPTION
TODO
METHODS
new($context,%config)
Creates a new Template::View presenting a custom view of
the specified $context object.
A reference to a hash array of configuration options may
be passed as the second argument.
- prefix
- Prefix added to all template names.
[% USE view(prefix => 'my_') %]
[% view.view('foo', a => 20) %] # => my_foo - suffix
- Suffix added to all template names.
[% USE view(suffix => '.tt2') %]
[% view.view('foo', a => 20) %] # => foo.tt2 - map Hash array mapping reference types to template names.
- The print() method uses this to determine which tem
plate to use to present any particular item. The
TEXT, HASH and ARRAY items default to 'test', 'hash'
and 'list' appropriately.
[% USE view(map => { ARRAY => 'my_list',HASH => 'your_hash',
My::Foo => 'my_foo', } ) %] - [% view.print(some_text) %] # => text
[% view.print(a_list) %] # => my_list
[% view.print(a_hash) %] # => your_hash
[% view.print(a_foo) %] # => my_foo - [% BLOCK text %]
- Text: [% item %]
- [% END %]
- [% BLOCK my_list %]
- list: [% item.join(', ') %]
- [% END %]
- [% BLOCK your_hash %]
- hash keys: [% item.keys.sort.join(', ')
- [% END %]
- [% BLOCK my_foo %]
- Foo: [% item.this %], [% item.that %]
- [% END %]
- method
- Name of a method which objects passed to print() may
provide for presenting themselves to the view. If a
specific map entry can't be found for an object refer
ence and it supports the method (default: 'present')
then the method will be called, passing the view as an
argument. The object can then make callbacks against
the view to present itself.
package Foo;sub present {my ($self, $view) = @_;
return "a regular view of a Foo0;}sub debug {my ($self, $view) = @_;
return "a debug view of a Foo0;} - In a template:
[% USE view %]
[% view.print(my_foo_object) %] # a regularview of a Foo[% USE view(method => 'debug') %]
[% view.print(my_foo_object) %] # a debug viewof a Foo - default
- Default template to use if no specific map entry is
found for an item.
[% USE view(default => 'my_object') %][% view.print(objref) %] # => my_object - If no map entry or default is provided then the view
will attempt to construct a template name from the
object class, substituting any sequence of non-word
characters to single underscores, e.g.
# 'fubar' is an object of class Foo::Bar
[% view.print(fubar) %] # => Foo_Bar - Any current prefix and suffix will be added to both
the default template name and any name constructed
from the object class. - notfound
- Fallback template to use if any other isn't found.
- item
- Name of the template variable to which the print()
method assigns the current item. Defaults to 'item'.
[% USE view %]
[% BLOCK list %][% item.join(', ') %][% END %]
[% view.print(a_list) %][% USE view(item => 'thing') %]
[% BLOCK list %][% thing.join(', ') %][% END %]
[% view.print(a_list) %] - view_prefix
- Prefix of methods which should be mapped to view() by
AUTOLOAD. Defaults to 'view_'.
[% USE view %]
[% view.view_header() %] # =>view('header')[% USE view(view_prefix => 'show_me_the_' %]
[% view.show_me_the_header() %] # =>view('header') - view_naked
- Flag to indcate if any attempt should be made to map
method names to template names where they don't match
the view_prefix. Defaults to 0.
[% USE view(view_naked => 1) %][% view.header() %] # =>view('header') - print( $obj1, $obj2, ... config)
- TODO
- view( $template,%vars,%config );
- TODO
AUTHOR
Andy Wardley <abw@kfs.org>
REVISION
$Revision: 2.8 $
COPYRIGHT
Copyright (C) 2000 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
SEE ALSO
- Template::Plugin,