Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTML-Template и бесконечная вложенность, Не получается придумать 
:(
    Опции темы
AlexanderI
  Дата 24.11.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.7.2004

Репутация: 2
Всего: 3



Использую  модуль HTML-Template для вывода данных.
Данные на выводе вот такие:

Код

$VAR1 = [
          {
            'subs' => [
                        {
                          'name' => 'Задвижки',
                          'id' => '4',
                          'subs2' => []
                        },
                        {
                          'name' => 'Компенсаторы ',
                          'id' => '5',
                          'subs2' => [
                                       {
                                         'name' => 'Сильфонные компенсаторы ',
                                         'id' => '6',
                                         'subs2' => []
                                       }
                                     ]
                        }
                      ],
            'name' => 'Трубопроводная арматура',
            'id' => '1'
          },
          {
            'subs' => [],
            'name' => 'Детали трубопроводов',
            'id' => '2'
          }
        ];


Т.е. значение subs2 может содержать бесконечную вложенность. Например 10 вложенностей или 20.
Можно ли как-то прикрутить модуль HTML::Template для вывода этой бесконечной вложенности ?

например:
Код

Меню_1
-вложенность 1
--вложенность 2
---вложенность 3
----вложенность 4
...
----------вложенность 10
Меню_2
Меню_3

--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
ginnie
Дата 24.11.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



AlexanderI, в лоб задачу решить скорее всего не получится. Можно попробовать преобразовать такую многоуровневую структуру в структуру с ограниченным количеством уровней (т.е. необходимую вложенность эмулировать через дополнительные параметры или элементы) и выводить ее при помощи HTML::Template.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
tolkien
Дата 25.11.2008, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Попробуйте рекурсию. Она идеальна подходит для подобных случаев 
PM MAIL   Вверх
ginnie
Дата 25.11.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



tolkien, расскажите как попробовать рекурсию в HTML::Template?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 26.11.2008, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



примерно  вот так  матрицу построить

Код

my $i;
my $rows = [
   map {
      my $row = $_;
      (++$i % 2)
         ? { ODD  => [ map { {VALUE => $_} } @{$row} ] }
         : { EVEN => [ map { {VALUE => $_} } @{$row} ] }
   } @{$data}
];


Код

<TMPL_LOOP NAME=ROWS>
   <tr>
   <TMPL_UNLESS NAME="__ODD__">
      <TMPL_LOOP NAME=EVEN>
         <td style="background: #B3B3B3"><TMPL_VAR NAME=VALUE></td>
      </TMPL_LOOP>
   <TMPL_ELSE>
      <TMPL_LOOP NAME=ODD>
         <td style="background: #CCCCCC"><TMPL_VAR NAME=VALUE></td>
      </TMPL_LOOP>
   </TMPL_UNLESS>
   </tr>
</TMPL_LOOP>


Это сообщение отредактировал(а) gcc - 26.11.2008, 12:54
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.