Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > HTML::Template ->> HTML::Template::Compiled


Автор: gcc 17.1.2011, 00:33
на одной странице есть  2 двумерных цикла:
     
Код

 <TMPL_LOOP NAME="index_new">


   <TMPL_LOOP NAME="COLUMNS">

   </TMPL_LOOP>



   </TMPL_LOOP>


      <TMPL_LOOP NAME="index_last">


   <TMPL_LOOP NAME="COLUMNS">
   </TMPL_LOOP>



   </TMPL_LOOP>




из-за них вылетает ошибка:
Код

Couldn't render template "/home/catalyst/root/view.tt". Error: "Can't use string ("") as a HASH ref while "strict refs" 
in use at /usr/local/lib/perl5/site_perl/5.8.9/HTML/Template/Compiled.pm line 1035."



включен:
Код

 global_vars => 1,


если поставить один цикл, все работает...!

во-втором цикле пробовал поменять название COLUMNS на 2COLUMNS2:

Код

      <TMPL_LOOP NAME="index_last">


   <TMPL_LOOP NAME="2COLUMNS2">
   </TMPL_LOOP>



   </TMPL_LOOP>



пишет все вермя, тоже самое...

в чем может быть проблема?
какие могут быть вараинты чтобы исправить?

Автор: arto 17.1.2011, 01:14
.COLUMNS ?

посмотреть на global_vars, и работу со вложенными циклами.

Автор: gcc 21.5.2011, 01:42
может кому-то пригодиться

нашел, есть структура в отладке

Код

{
                               'COLUMNS' => [
                                              {
                                                'name_pf' => undef,
                                                'hidden_pf' => '0',
                                                'id_pf' => '14251',
                                                'id_un' => '1',
                                                'hidden_pa' => '0',
                                                'see' => 1,
                                                'username' => 'ProFTP',
                                                'created' => '1304272855',
                                                'viewing' => '4',
                                                'id_pa' => '836',
                                                'description_pf' => undef,
                                                'y_pf' => '330',
                                                'x_pf' => '250',
                                                'size_pf' => '0.1'
                                              },
                                              '',
                                              '',
                                              ''
                                            ]
                             }


надо убрать вот это:
Код

                                              '',
                                              '',
                                              ''

или заменить на что угодно, я заменил на пустой хэш 
Код

{}

Автор: myth777 23.5.2011, 12:21
Попробуйте установить
Код

die_on_bad_params=>0

при создании HTML::Template

Автор: arto 23.5.2011, 13:45
  MISSING FEATURES
       There are some features of H::T that are missing.  I'll try to list them here.

       "die_on_bad_params"
           I don't think I'll implement that.

Автор: gcc 23.5.2011, 15:16
еще когда параметр называется в шаблоне

Код

<TMPL_VAR NAME="PAGE">


а хэш стоит $c->stash->{page}
в HTML::Template  - это срабатывало как одно и тоже, регистр игнорировался

а в HTML::Template::Compiled надо менять... на $c->stash->{PAGE}



Автор: myth777 25.5.2011, 15:00
Цитата(arto @ 23.5.2011,  13:45)
MISSING FEATURES
       There are some features of H::T that are missing.  I'll try to list them here.

       "die_on_bad_params"
           I don't think I'll implement that.


Код

HTML::Template->new(filename => path_to_file.htm, die_on_bad_params=>0);

Автор: arto 25.5.2011, 15:04
вроде используют HTML::Template::Compiled, не?

Автор: myth777 25.5.2011, 17:10
Цитата(arto @ 25.5.2011,  15:04)
вроде используют HTML::Template::Compiled, не?

Ну да, пардон. Придется значит следить за тем что передаете. А функционала  HTML::Template не хватает что ли? 

Автор: arto 25.5.2011, 17:26
HTML::Template не поддрживает шаблоны в utf8, например.

Автор: myth777 26.5.2011, 07:59
Цитата(arto @ 25.5.2011,  17:26)
HTML::Template не поддрживает шаблоны в utf8, например.

Здрасти приехали, у меня почему то работает.
А вот реализация на c++ нет.

Автор: arto 26.5.2011, 08:32
прямо из коробки?
без патченья?

Автор: gcc 26.5.2011, 12:14
Цитата(myth777 @ 25.5.2011,  17:10)
HTML::Template не хватает что ли?

время генерации большой страницы с циклами и т.д. идет порядка ~3-8сек. и сильно грузит CPU сервера, кэширование не помогает

кэширование в HTML::Template::Compiled ускорило ЭТО порядка 0.1-1.5сек.

Автор: myth777 26.5.2011, 12:39
Цитата(gcc @ 26.5.2011,  12:14)
Цитата(myth777 @ 25.5.2011,  17:10)
HTML::Template не хватает что ли?

время генерации большой страницы с циклами и т.д. идет порядка ~3-8сек. и сильно грузит CPU сервера, кэширование не помогает

кэширование в HTML::Template::Compiled ускорило ЭТО порядка 0.1-1.5сек.

Да, пряма из коробки(Debian).
У меня до 800 записей из  таблицы в LOOP подсовываются на одной странице, отображаются нормально. 
Разбивать страницы не пробовали?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)