Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Template::View(3)     User Contributed Perl Documentation    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   = "&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 template	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 reference 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 Foo\n";
	       }

	       sub debug {
		   my ($self, $view) = @_;
		   return "a debug view	of a Foo\n";
	       }

	   In a	template:

	       [% USE view %]
	       [% view.print(my_foo_object) %]	   # a regular view of a Foo

	       [% USE view(method => 'debug') %]
	       [% view.print(my_foo_object) %]	   # a debug view of 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 indicate 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@wardley.org> <http://wardley.org/>

COPYRIGHT
       Copyright (C) 2000-2007 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

perl v5.32.1			  2020-07-13		     Template::View(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | AUTHOR | COPYRIGHT | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Template::View&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help