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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Catalyst сборка шаблона в переменную. Catalyst сборка шаблона в переменную. 
:(
    Опции темы
z0091
Дата 28.10.2012, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый вечер!

Представим есть обертка шаблона.

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <link rel="stylesheet" type="text/css" href="dbrm/root/styles/style.css"/>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>[% page.title %]</title>
    </head>
    <body>
        [% page.content %]
    </body>
</html>


Также есть контролер page.pm
В зависимости от переменной, контролер вытаскивает данные из базы.

Например страницу с id=1
Код

my $my_content = $c->model('DBI::Content::Return')->return( '1' );


DBI::Content::Return
Код

    foreach my $content_f (@$contents) {
            $keys_db->{ $content_f->{id}  }->{title} = $content_f->{title};
            $keys_db->{ $content_f->{id}  }->{date} = $content_f->{date};
            $keys_db->{ $content_f->{id}  }->{published} = $content_f->{published};
            $keys_db->{ $content_f->{id}  }->{autor} = $content_f->{autor};
            $keys_db->{ $content_f->{id}  }->{content} = $content_f->{content};
    }

    #print Dumper $keys_db;
    return \$keys_db;


Ни как не могу понять, как мне отправить данные хэша $my_content, в определенный шаблон. И уже подготовленный html код вставить в $c->page->content

Погуглив наткнулся на:
Код

my $html = $c->view('TT')->render($c,'list_main.tt2', { result => $result, no_wrapper => 1 });


Но не могу понять как это работает.
PM MAIL ICQ   Вверх
z0091
Дата 28.10.2012, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нашел пример:


Код

sub email_stuff : Local {
    my ($self, $c, $review_id) = @_;

    $c->stash(
        review_url    => $c->uri_for("/thingy/${review_id}"),
        status_msg => "Thank you for your feedback!",
        template      => 'view_all.tt2',
    );

    $c->email(
        header => [
            From    => $c->config->{'from'},
            To      => $c->config->{'to'},
            Subject => "Emaily stuff!",
        ],
        body => $c->view('TT')->render($c, 'review.tt2'),
    );

    return; 
}



Я правильно понимаю, что линией  body => $c->view('TT')->render($c, 'review.tt2'),

Мы присваиваем в  $c->body шаблон review.tt2 с уже вставленными в него

Код

  header => [
            From    => $c->config->{'from'},
            To      => $c->config->{'to'},
            Subject => "Emaily stuff!",
        ],


Если да, то помогите пожалуйста разобраться, где и как осуществляется эта самая вставка. 
PM MAIL ICQ   Вверх
z0091
Дата 30.10.2012, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Разобрался.

Можно делать так:

Код

sub index :Path :Args(0) {
    my ( $self, $c ) = @_;


    my $my_page_id = $c->req->param('id');
    my $f = $c->model('DBI::Content::Return');
    $f = $f->return( $my_page_id );
    $c->stash->{content} = $f->{content};
    $c->stash->{content} = $c->view('TT')->render( $c, 'content.html' ); 
    print Dumper $c->stash->{content};
}



DBI::Content::Return
Код

extends 'dbrm::Model::DBI';

sub return {
    my ( $self, $id ) = @_;

    my $dbh = $self->dbh;
    
    my $contents = $dbh->selectall_arrayref(
        "SELECT * FROM  `contents` WHERE id = $id",
    { Slice => {} } )
    or die "Couldn't select books: " . $dbh->errstr;

    foreach my $content_f (@$contents) {

        $self->{content}->{title} = $content_f->{title};
        $self->{content}->{date} = $content_f->{date};
        $self->{content}->{published} = $content_f->{published};
        $self->{content}->{autor} = $content_f->{autor};
        $self->{content}->{content} = $content_f->{content};
    }
    return $self;
}


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


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

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


 




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


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

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