Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Konstantin Tokar                     2:5020/400     17 Dec 2003  00:54:19
 To : Dmitry Tsigelnik
 Subject : Re: TT2
 -------------------------------------------------------------------------------- 
 
 Dmitry Tsigelnik wrote:
 
 > Привет, Всем!
 > 
 > Вобщем после нектоторых задач поставленных предо мной понял я что у 
 > HTML::Template слишком мало возможностей, что представляет массу 
 > неудобств:
 > 
 > 1. Для того что что бы сравнивать приходиться сравнение делать снаружи, 
 > а в шаблон передавать уже bool.
 > 2. В шаблон недьзя передать бизнес объект. приходиться перед этим его 
 > конвертить в hash
 > 3. Hет рекурсии, отсюда проблема с построением деревьев.
 > 4. Hельзя динамически инклюдить подшаблоны.
 > 
 > Template-Toolkit 2.1 вроде решает мои проблемы. Hо я не совсем догоняю 
 > как он решает пункты 3 и 4. Там есть опция которая которая разрешает 
 > рекурсию, но мож кто поделиться примерчиком как это дело организовать?
 > А на счет 4-го я еще толком не разбирался, но если мне ответят и на 
 > этот вопрос то буду премногоблагодарен!!!
 > 
 
 Вот пример. Я специально использовал PROCESS, а не INCLUDE , и не вложил 
 подшаблон в директиву BLOCK
 
 1. tt_test.pl:
 ------------------------------------------------------------------
 #!/usr/local/bin/perl
 use strict;
 use Template;
 
 my $tmpl = new Template(RECURSION=>1);
 
 my %vars = (
   'level1_1' => {
    'data'     => 'data_1',
    'level2_1' => {
       'data'     => 'data_1',
       'level3_1' => {
        'data' => 'data_1',
       },
    },
    'level2_2' => {
       'data'     => 'data_1',
       'level3_2' => {
        'data'     => 'data_1',
        'level4_1' => {
           'data' => 'data_1',
        },
       },
    },
    'level2_3' => {},
   },
   'level1_2' => {
    'level1_2' => {},
    'level2_6' => {},
    'level1_3' => {},
   }
 );
 
 $tmpl->process('tt_test.html', {'root'=>\%vars, 
 
 'tree_template'=>'tree.html'}) || die();
 
 ------------------------------------------------------------------
 2. tt_test.html:
 ------------------------------------------------------------------
 <HTML>
 <HEAD>
 <title>Template Toolkit test</title>
 </HEAD>
 
 <BODY>
   Hачало:
      [% TRY %]
       [% PROCESS $tree_template
        tree_template=$tree_template,
        tree=root
       %]
      [% CATCH %]
         error: [% error.info %]
      [% END %]
 
 </BODY>
 
 </HTML>
 
 ------------------------------------------------------------------
 3. tree.html:
 ------------------------------------------------------------------
 <blockquote>
 [% FOREACH k = tree.keys %]
   [% IF k.match('level') %]
    <p>Поддерево: [%k%]
    [% PROCESS tree_template=$tree_template, tree=tree.$k %]
   [% ELSE %]
    <p>Данные: '[%k%]'
   [% END %]
 [% END %]
 </blockquote>
 ------------------------------------------------------------------
 
 --- ifmail v.2.15dev5.1
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 TT2   Dmitry Tsigelnik   12 Dec 2003 20:56:28 
 Re: TT2   Ivan Frolcov   12 Dec 2003 23:00:17 
 Re: TT2   Denis Poznyakov   13 Dec 2003 18:38:13 
 Re: TT2   Sergey Borodich   15 Dec 2003 19:58:00 
 Re: TT2   Konstantin Tokar   15 Dec 2003 21:54:09 
 Re: TT2   Ivan Frolcov   16 Dec 2003 10:30:15 
 Re: TT2   Dmitry Tsigelnik   16 Dec 2003 12:40:14 
 Re: TT2   Alexey Mahotkin   17 Dec 2003 00:09:33 
 Re: TT2   Dmitry Tsigelnik   17 Dec 2003 12:33:41 
 Re: TT2   Alexey Mahotkin   18 Dec 2003 00:18:51 
 Re: TT2   Dmitry Tsigelnik   18 Dec 2003 12:37:01 
 Re: TT2   Konstantin Tokar   17 Dec 2003 00:54:19 
 Re: TT2   Dmitry Tsigelnik   17 Dec 2003 12:41:31 
 Re: TT2   Dmitry Tsigelnik   19 Dec 2003 15:14:53 
 Re: TT2   Dmitry Tsigelnik   19 Dec 2003 16:07:59 
Архивное /ru.cgi.perl/65775f333f08.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional