|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Antony Gerasimov 2:5010/148.46 26 May 2003 16:31:28 To : All Subject : HTML::Template --------------------------------------------------------------------------------
Пpивет All!
Заметил такой "глюк" у модуля. В опредлённых случаях он не обрабатывает свои
конструкции. Hапример, имеется вот такой шаблон:
=== начался |cat ~/spc-ed.tmpl.html ===
<h2><TMPL_VAR NAME=HEADER></h2>
<TMPL_IF NAME=ISVIEW>
<form action="<TMPL_VAR NAME=SCRIPT>" method="POST">
<input type="hidden" name="job" value="<TMPL_VAR NAME=H_JOB>">
<input type="hidden" name="dat" value="<TMPL_VAR NAME=H_DAT>">
</TMPL_IF>
<table width="100%" border="0" cellspacing="2" cellspacing="2">
<tr bgcolor="#c0c0c0">
<th width="5%"><strong>X</strong></th>
<th><a href="<TMPL_VAR NAME=SCRIPT>?job=<TMPL_VAR
NAME=H_JOB>&by=0">Описание специальности</a></th>
<th width="15%"><a href="<TMPL_VAR NAME=SCRIPT>?job=<TMPL_VAR
NAME=H_JOB>&by=1">Шифр</a></th>
</tr>
<TMPL_LOOP NAME=SPECS>
<tr bgcolor="<TMPL_VAR NAME=COLOR>">
<td align="center">
<TMPL_IF NAME=ISVIEW>
<input type="radio" name="sid" value="<TMPL_VAR NAME=SID>" >
</TMPL_IF>
</td>
<td><TMPL_VAR NAME=TXT_VALUE></td>
<td align="center"><TMPL_VAR NAME=CODE_VALUE></td>
</tr>
</TMPL_LOOP>
<TMPL_IF NAME=ISVIEW>
<tr>
<td colspan="3"><input type="submit" value="<TMPL_VAR
NAME=BUTTON>"></td>
</tr>
</TMPL_IF>
</table>
</form>
=== закончился |cat ~/spc-ed.tmpl.html ===
Имеется условие и цикл. Далее всё вызывается так
=== начался |cat /stuff/www/cgi-bin/peoples/peoples.cgi ===
my $edt_template = HTML::Template->new(filename => 'spc-ed.tmpl.html',
path => 'templates/' );
$edt_template->param( HEADER => 'Редактирование специальности',
SCRIPT => $ENV{'SCRIPT_NAME'}, H_JOB => 'sEdit', H_DAT => 'edt',
BUTTON => 'Редактировать запись', ISVIEW => 1);
my @loop_data = ();
while ( @arr = $sth->fetchrow_array() ) {
my %row_data;
if ($clr) { $color='#fff5ee'; $clr=0; }
else { $color='#e6e6fa'; $clr=1; }
$row_data{COLOR} = $color;
$row_data{SID} = $arr[0];
$row_data{TXT_VALUE} = $arr[1];
$row_data{CODE_VALUE} = $arr[2];
push (@loop_data, \%row_data);
}
$edt_template->param( SPECS => \@loop_data);
print $edt_template->output();
=== закончился |cat /stuff/www/cgi-bin/peoples/peoples.cgi ===
Если делаем 'ISVIEW => 1', то получаем форму, и кнопку внизу таблицы.
Радиокнопки, которые генерятся в цикле по такому же условию, отсуствуют. В чём
загвозка -- непонятно. Делаем 'ISVIEW => 0' (просто убираем) при вызове метода
param() -- кнопка исчезает, как и положено.
В чём может быть проблема?
зы. Template-Toolkit просьба не предлагать. Hеобходимо решить задачу данным
модулем.
--- GoldED+/BSD 1.1.4.7
* Origin: No one wants to be someone else's control. (2:5010/148.46)
Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/39693ed1f0fa.html, оценка из 5, голосов 10
|