|
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) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/65775f333f08.html, оценка из 5, голосов 10
|