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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Template toolkit - что лучше передавать в шаблон 
:(
    Опции темы
sklins
Дата 29.9.2012, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача стоит такая. На вход подаётся .xls файл. Скрипт делает некоторые манипуляции с ним и генерируют html страницу. Пока что упростил себе задачу и просто хочу вывести таблицу.  Для парсинга xls использовал Spreadsheet::ParseExcel. Получал значения ячеек в массив и пытался их вывести. Но тут возник вопрос. Может зря я в массив все значения загонял? ТТ умеет работать с методами объекта. Что лучше в данном случае? Передавать в шаблон массив или вызывать из шаблона метод? И если не сложно, то с примерами. 
PM MAIL   Вверх
vadiml
Дата 29.9.2012, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Лучше в перле распарсить xls, как я понимаю там 2х уровневая структура получится, массив массивов, например.

А в ТТ сделаете 2 FOREACH.
PM MAIL Jabber   Вверх
alezzz
Дата 29.9.2012, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Вместе с передачей различных данный в TT можно также передать и ссылку на функцию, т.е. примерно так:
Код

$vars{'mysub'} = sub {
    my $param = shift;
    ...
}

в шаблоне:
Код

[% mysub(param) %]

ну вобщем как-то так, удобно это или нет и что возвращять функцией вам решать
PM MAIL   Вверх
sklins
Дата 29.9.2012, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(vadiml @ 29.9.2012,  19:37)
Лучше в перле распарсить xls, как я понимаю там 2х уровневая структура получится, массив массивов, например.

А в ТТ сделаете 2 FOREACH.

А не подскажите синтаксис шаблона для вывода двумерного массива? А то пробывал разные варианты и что то не получалось.
PM MAIL   Вверх
vadiml
Дата 30.9.2012, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тут есть примеры:
http://www.template-toolkit.ru/Manual/Directives.html
глава "Циклическая обработка"

А вообще любую вложенность можно вывести, хотя мне больше 3 вложений (смесь массивов и хешей) не приходилось.
PM MAIL Jabber   Вверх
sklins
Дата 30.9.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Из примера я так и не понял как вывести двумерный массив. Вот набросал код. Отрабатывается без ошибок, но ничего не выводит.
Код

[% FOREACH i IN array;
    FOREACH j IN array;
       array.i.j;
    END;
 END; %]

Мне бы пример глянуть. Может я просто не то передаю шаблону?
Код

my $vars = {
        title => "new",
       array => \@array,
    };

PM MAIL   Вверх
alezzz
Дата 30.9.2012, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Код

use strict;
use Template;

my @arr = (
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
);

my $tt = Template->new();
$tt->process(\*DATA, {'arr' => \@arr});

__DATA__
[% FOREACH i IN arr -%]
[% FOREACH j IN i -%]
[% j -%]
[% END %]
[% END -%]

PM MAIL   Вверх
sklins
Дата 30.9.2012, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(alezzz @ 30.9.2012,  14:03)
Код


[% FOREACH i IN arr -%]
[% FOREACH j IN i -%]
[% j -%]
[% END %]
[% END -%]

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


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

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


 




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


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

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