Your IP : 3.23.101.231


Current Path : /usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/
Upload File :
Current File : //usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/View.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
  <head>
    <title>Template::View</title>
    <link rel="stylesheet" type="text/css" href="../../css/blue.css" title="Clear Blue">
    <link rel="alternate stylesheet" type="text/css" href="../../css/orange.css" title="Clear Orange">
    <link rel="alternate stylesheet" type="text/css" href="../../css/green.css" title="Clear Green">
    <link rel="alternate stylesheet" type="text/css" href="../../css/purple.css" title="Clear Purple">
    <link rel="alternate stylesheet" type="text/css" href="../../css/grey.css" title="Clear Grey">
    <!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="../../css/ie6.css" />
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/css/print.css" media="print">
    <script type="text/javascript" src="../../js/tt2.js"></script>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <meta name="author" content="Andy Wardley">
  </head>
  <body id="body"> 
    <div id="layout">
        <div id="header">
          <a href="../../index.html" id="logo" alt="" title="Click for the Home Page"><span class="alt">TT2 Home Page</span></a>
          <ul id="trail">
            <li><a href="../../modules/index.html">Modules</a></li>
            <li><a href="../../modules/Template/index.html">Template::*</a></li>
            <li class="last"><a href="../../modules/Template/View.html">View.pm</a></li>
          </ul>
          <div class="controls">
            <a href="#" class="menu show" onclick="widescreen_off(); return false" title="Show Menu">
              <span class="about">Click to view the menu.  It's very nice.</span>
            </a>
            <a href="#" class="menu hide" onclick="widescreen_on();  return false" title="Hide Menu">
              <span class="about">Click to hide the menu and go all widescreen!</span>
            </a>
          
          <div class="pager">
            <a href="../../modules/Template/VMethods.html" title="Template::VMethods" class="go back">Back<span class="about"><h4>Template::VMethods</h4>Virtual methods for variables</span></a>
            <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a>
            <span class="go next">Next<span class="about">You can't go to the next page.  Would you like to come foraging for nuts and berries in the forest with me instead?</span></span>
          </div>
          </div>
          <h1 class="headline">Template::View</h1>
          <h2 class="subhead">customised view of a template processing context</h1>
        
        </div>
        <div id="page">
          <div id="sidebar">
            <a href="../../index.html" id="logo"></a>
            <div id="menu">
              <ul class="menu">
                <li class="l0 first"><a href="../../manual/index.html">Manual</a></li>
                <li class="l0"><a href="../../modules/index.html" class="warm">Modules</a></li>
                <li class="l1"><a href="../../modules/Template.html">Template.pm</a></li>
                <li class="l1"><a href="../../modules/Template/index.html" class="warm">Template::*</a></li>
                <li class="l2"><a href="../../modules/Template/Base.html">Base.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Config.html">Config.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Constants.html">Constants.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Context.html">Context.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Directive.html">Directive.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Document.html">Document.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Exception.html">Exception.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Filters.html">Filters.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Grammar.html">Grammar.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Iterator.html">Iterator.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Namespace/index.html">Namespace::*</a></li>
                <li class="l2"><a href="../../modules/Template/Parser.html">Parser.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Plugin.html">Plugin.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Plugin/index.html">Plugin::*</a></li>
                <li class="l2"><a href="../../modules/Template/Plugins.html">Plugins.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Provider.html">Provider.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Service.html">Service.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Stash.html">Stash.pm</a></li>
                <li class="l2"><a href="../../modules/Template/Stash/index.html">Stash::*</a></li>
                <li class="l2"><a href="../../modules/Template/Test.html">Test.pm</a></li>
                <li class="l2"><a href="../../modules/Template/VMethods.html">VMethods.pm</a></li>
                <li class="l2"><a href="../../modules/Template/View.html" class="warm">View.pm</a></li>
                <li class="l0"><a href="../../tools/index.html">Tools</a></li>
                <li class="l0 last"><a href="../../tutorial/index.html">Tutorial</a></li>
              </ul>
              <div class="foot"></div>
            </div>
          </div>
          <div id="content">
          <div class="section">
            <div class="head">
              <h1 id="contents" onclick="switch_section(this)" title="Click title to show/hide section content.">Contents</h1>
              <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
            </div>
            <div class="body">
              <ul class="toc">
                  <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li>
                  <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li>
                  <li class=""><a href="#METHODS">METHODS</a></li>
                  <li class="sub"><a href="#method_new">new($context, \%config)</a></li>
                  <li class="sub"><a href="#method_print">print( $obj1, $obj2, ... \%config)</a></li>
                  <li class="sub"><a href="#method_view">view( $template, \%vars, \%config );</a></li>
                  <li class=""><a href="#AUTHOR">AUTHOR</a></li>
                  <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li>
                  <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li>
              
              </ul>
            </div>
          </div>
          
                <div class="pod">
            <div class="section">
              <div class="head">
                <h1 id="SYNOPSIS" onclick="switch_section(this)" title="Click title to show/hide section content.">SYNOPSIS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <pre># define a view
[% VIEW view
        # some standard args
        prefix        =&gt; 'my_', 
        suffix        =&gt; '.tt2',
        notfound      =&gt; 'no_such_file'
        ...</pre>
                    <pre>        # any other data
        title         =&gt; 'My View title'
        other_item    =&gt; 'Joe Random Data'
        ...
%]
   # add new data definitions, via 'my' self reference
   [% my.author = "$abw.name &lt;$abw.email&gt;" %]
   [% my.copy   = "&amp;copy; Copyright 2000 $my.author" %]</pre>
                    <pre># define a local block
[% BLOCK header %]
This is the header block, title: [% title or my.title %]
[% END %]</pre>
                    <pre>[% END %]</pre>
                    <pre># access data items for view
[% view.title %]
[% view.other_item %]</pre>
                    <pre># access blocks directly ('include_naked' option, set by default)
[% view.header %]
[% view.header(title =&gt; 'New Title') %]</pre>
                    <pre># non-local templates have prefix/suffix attached
[% view.footer %]           # =&gt; [% INCLUDE my_footer.tt2 %]</pre>
                    <pre># more verbose form of block access
[% view.include( 'header', title =&gt; 'The Header Title' ) %]
[% view.include_header( title =&gt; 'The Header Title' ) %]</pre>
                    <pre># very short form of above ('include_naked' option, set by default)
[% view.header( title =&gt; 'The Header Title' ) %]</pre>
                    <pre># non-local templates have prefix/suffix attached
[% view.footer %]           # =&gt; [% INCLUDE my_footer.tt2 %]</pre>
                    <pre># fallback on the 'notfound' template ('my_no_such_file.tt2')
# if template not found 
[% view.include('missing') %]
[% view.include_missing %]
[% view.missing %]</pre>
                    <pre># print() includes a template relevant to argument type
[% view.print("some text") %]     # type=TEXT, template='text'</pre>
                    <pre>[% BLOCK my_text.tt2 %]           # 'text' with prefix/suffix
   Text: [% item %]
[% END %]</pre>
                    <pre># now print() a hash ref, mapped to 'hash' template
[% view.print(some_hash_ref) %]   # type=HASH, template='hash'</pre>
                    <pre>[% BLOCK my_hash.tt2 %]           # 'hash' with prefix/suffix
   hash keys: [% item.keys.sort.join(', ')
[% END %]</pre>
                    <pre># now print() a list ref, mapped to 'list' template
[% view.print(my_list_ref) %]     # type=ARRAY, template='list'</pre>
                    <pre>[% BLOCK my_list.tt2 %]           # 'list' with prefix/suffix
   list: [% item.join(', ') %]
[% END %]</pre>
                    <pre># print() maps 'My::Object' to 'My_Object'
[% view.print(myobj) %]</pre>
                    <pre>[% BLOCK my_My_Object.tt2 %]
   [% item.this %], [% item.that %]
[% END %]</pre>
                    <pre># update mapping table
[% view.map.ARRAY = 'my_list_template' %]
[% view.map.TEXT  = 'my_text_block'    %]</pre>
                    <pre># change prefix, suffix, item name, etc.
[% view.prefix = 'your_' %]
[% view.default = 'anyobj' %]
...</pre>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="DESCRIPTION" onclick="switch_section(this)" title="Click title to show/hide section content.">DESCRIPTION</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      TODO
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="METHODS" onclick="switch_section(this)" title="Click title to show/hide section content.">METHODS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <div class="subsection">
                  <div class="head">
                    <h2 id="method_new" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">new($context, \%config)</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          Creates a new Template::View presenting a custom view of the specified
                          $context object.
                        </p>
                        <p>
                          A reference to a hash array of configuration options may be passed as the
                          second argument.
                        </p>
                        <ul>
                        <li><b id="item_prefix">prefix</b>
                        <p>
                          Prefix added to all template names.
                        </p>
                        <pre>[% USE view(prefix =&gt; 'my_') %]
[% view.view('foo', a =&gt; 20) %]     # =&gt; my_foo</pre>
                        </li>
                        <li><b id="item_suffix">suffix</b>
                        <p>
                          Suffix added to all template names.
                        </p>
                        <pre>[% USE view(suffix =&gt; '.tt2') %]
[% view.view('foo', a =&gt; 20) %]     # =&gt; foo.tt2</pre>
                        </li>
                        <li><b id="item_map">map </b>
                        <p>
                          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.
                        </p>
                        <pre>[% USE view(map =&gt; { ARRAY   =&gt; 'my_list', 
                     HASH    =&gt; 'your_hash',
                     My::Foo =&gt; 'my_foo', } ) %]</pre>
                        <pre>[% view.print(some_text) %]         # =&gt; text
[% view.print(a_list) %]            # =&gt; my_list
[% view.print(a_hash) %]            # =&gt; your_hash
[% view.print(a_foo) %]             # =&gt; my_foo</pre>
                        <pre>[% BLOCK text %]
   Text: [% item %]
[% END %]</pre>
                        <pre>[% BLOCK my_list %]
   list: [% item.join(', ') %]
[% END %]</pre>
                        <pre>[% BLOCK your_hash %]
   hash keys: [% item.keys.sort.join(', ')
[% END %]</pre>
                        <pre>[% BLOCK my_foo %] 
   Foo: [% item.this %], [% item.that %]
[% END %]</pre>
                        </li>
                        <li><b id="item_method">method</b>
                        <p>
                          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.
                        </p>
                        <pre>package Foo;</pre>
                        <pre>sub present {
    my ($self, $view) = @_;
    return "a regular view of a Foo\n";
}</pre>
                        <pre>sub debug {
    my ($self, $view) = @_;
    return "a debug view of a Foo\n";
}</pre>
                        <p>
                          In a template:
                        </p>
                        <pre>[% USE view %]
[% view.print(my_foo_object) %]     # a regular view of a Foo</pre>
                        <pre>[% USE view(method =&gt; 'debug') %]
[% view.print(my_foo_object) %]     # a debug view of a Foo</pre>
                        </li>
                        <li><b id="item_default">default</b>
                        <p>
                          Default template to use if no specific map entry is found for an item.
                        </p>
                        <pre>[% USE view(default =&gt; 'my_object') %]</pre>
                        <pre>[% view.print(objref) %]            # =&gt; my_object</pre>
                        <p>
                          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.
                        </p>
                        <pre># 'fubar' is an object of class Foo::Bar
[% view.print(fubar) %]             # =&gt; Foo_Bar</pre>
                        <p>
                          Any current prefix and suffix will be added to both the default template
                          name and any name constructed from the object class.
                        </p>
                        </li>
                        <li><b id="item_notfound">notfound</b>
                        <p>
                          Fallback template to use if any other isn't found.
                        </p>
                        </li>
                        <li><b id="item_item">item</b>
                        <p>
                          Name of the template variable to which the print() method assigns the
                          current item. Defaults to 'item'.
                        </p>
                        <pre>[% USE view %]
[% BLOCK list %] 
   [% item.join(', ') %] 
[% END %]
[% view.print(a_list) %]</pre>
                        <pre>[% USE view(item =&gt; 'thing') %]
[% BLOCK list %] 
   [% thing.join(', ') %] 
[% END %]
[% view.print(a_list) %]</pre>
                        </li>
                        <li><b id="item_view_prefix">view_prefix</b>
                        <p>
                          Prefix of methods which should be mapped to view() by AUTOLOAD. Defaults
                          to 'view_'.
                        </p>
                        <pre>[% USE view %]
[% view.view_header() %]                    # =&gt; view('header')</pre>
                        <pre>[% USE view(view_prefix =&gt; 'show_me_the_' %]
[% view.show_me_the_header() %]             # =&gt; view('header')</pre>
                        </li>
                        <li><b id="item_view_naked">view_naked</b>
                        <p>
                          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.
                        </p>
                        <pre>[% USE view(view_naked =&gt; 1) %]</pre>
                        <pre>[% view.header() %]                 # =&gt; view('header')</pre>
                        </li>
                        </ul>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="method_print" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">print( $obj1, $obj2, ... \%config)</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          TODO
                        </p>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="method_view" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">view( $template, \%vars, \%config );</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          TODO
                        </p>
                  </div>
                </div>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="AUTHOR" onclick="switch_section(this)" title="Click title to show/hide section content.">AUTHOR</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Andy Wardley &lt;abw@wardley.org&gt; <a
                      href="http://wardley.org/">http://wardley.org/</a>
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="COPYRIGHT" onclick="switch_section(this)" title="Click title to show/hide section content.">COPYRIGHT</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Copyright (C) 2000-2007 Andy Wardley. All Rights Reserved.
                    </p>
                    <p>
                      This module is free software; you can redistribute it and/or modify it
                      under the same terms as Perl itself.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="SEE_ALSO" onclick="switch_section(this)" title="Click title to show/hide section content.">SEE ALSO</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      <a href="../../modules/Template/Plugin.html">Template::Plugin</a>
                    </p>
              </div>
            </div>
            
            </div></div>
          <br class="clear" />
          <div class="pageinfo">
            /modules/Template/View.html last modified 10:55:10 31-May-2007
          </div>
        </div>
        
        <div id="footer">
          <a href="http://opensource.org/" class="osi"></a>
          <div class="controls">
          <div class="pager">
            <a href="../../modules/Template/VMethods.html" title="Template::VMethods" class="go back">Back<span class="about"><h4>Template::VMethods</h4></span></a>
            <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a>
            <span class="go next">Next<span class="about"></span></span>
          </div>
          </div>
          <div class="copyright">
            Copyright &copy; 1996-2007 <a href="http://wardley.org/">Andy Wardley</a>.  All Rights Reserved.
          </div>
          <div class="licence">
            The <a href="http://template-toolkit.org/">Template Toolkit</a> is <a href="http://opensource.org/">Open Source</a> software.
            You can redistribute and/or modify it under the terms of the <a href="http://www.opensource.org/licenses/gpl-license.php">GNU Public Licence</a>
            or the <a href="http://www.opensource.org/licenses/artistic-license.php">Perl Artistic Licence</a>.
          </div>
        </div>
        <div id="palette">
          <ul>
            <li class="first"><a href="#" class="blue" onclick="set_style('Clear Blue')"></a></li>
            <li><a href="#" class="orange" onclick="set_style('Clear Orange')"></a></li>
            <li><a href="#" class="green" onclick="set_style('Clear Green')"></a></li>
            <li><a href="#" class="purple" onclick="set_style('Clear Purple')"></a></li>
            <li><a href="#" class="grey" onclick="set_style('Clear Grey')"></a></li>
          </ul>
        </div>
    </div>  </body>
</html>