LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Perl (95) - Catalyst - šablony

Perl Blíže se seznámíme s několika různými syntaxemi, které lze používat v šablonách.

28.12.2009 01:00 | Jiří Václavík | Články autora | přečteno 7876×

Podívejme se ještě jednou na soubor root/hello.tt, který jsme vytvořili v minulém dílu. Nazvali jsme ho šablonou, ale zatím obsahoval jen čistý HTML kód.

Ve skutečnosti může šablona vypadat takřka jakkoliv, protože si sami můžeme zvolit pravidla pro to, jak bude fungovat. O těchto pravidlech rozhoduje pomocný modul, kterým se daný View řídí.

My jsme použili v aplikaci Hello pomocný modul Template Toolkit (přesněji šlo o Catalyst::View::TT) a proto se primárně podíváme na tuto syntaxi. V tomto konkrétním případě platí, že šablona obsahuje speciální bloky kódu, které se před odesláním klientovi vyhodnotí a vygenerují místo sebe nějaký další HTML kód. Bloky jsou ohraničené závorkami [% ... %].

Zůstaňme ještě chvíli u Template Toolkit a představme si nejdůležitější syntaxi uvnitř speciálních bloků.

Vložení kódu

Nejjednodušší je vložení nějakých dat zvenku dovnitř šablony. K tomu používáme zápis buď [% text %] nebo [% text | html %]. Lze si to představovat tak, že text je proměnná, za kterou se dosadí její aktuální obsah. Zadáme-li modifikátor html sloužící pro filtrování výstupu, budou HTML znaky se speciálním významem překonvertovány na jejich zástupce uvozené ampérsandem.

Naši šablonu můžeme upravit například takto.

<html>

<head><title>Toto je první stránka v Catalystu</title></head>

<body>
<h1>Ahoj světe!</h1>
<p>Tady je něco napsáno: [% neco | html %]</p>
</body>

</html>

Tato data dodáme do výsledné podoby stránky v naší metodě hello. Využijeme opět objekt $c a pomocí stash přiřadíme našemu neco hodnotu. Procedura hello v našem Controlleru se změní do následující podoby.

sub hello : Global {
    my ($self, $c) = @_;
    $c->stash->{template} = "hello.tt";
    $c->stash->{neco} = "toto jsou data získaná někde venku";
}

Nyní ve výsledné stránce uvidíme tento nový text.

Stránka vytvořená pomocí šablony

Další konstrukce v šabloně

Podívejme se ještě na složitější konstrukce, které můžeme použít uvnitř bloku [% ... %]. Lze používat nejběžnější řídící struktury jako IF, WHILE, FOREACH a podobně. Zde můžeme vidět příklad struktury IF, která ošetřuje, zda je neco definováno.

[% IF neco %]
   <p>[% neco %]</p>
[% END %]

Dále bývá velmi užitečné použití FOREACH. Syntaxe je zde intuitivní. Konstrukce tohoto typu se používají při spolupráci s databází. S dolováním dat z databáze pomocí Catalystu se ještě později setkáme.

[% FOREACH polozka IN zbozi -%]
  <tr>
    <td>[% polozka.id %]</td>
    <td>[% polozka.nazev %]</td>
    <td>[% polozka.cena %]</td>
  </tr>
[% END -%]

Komentář, který nebude vidět ve výsledném zdrojovém kódu pro HTML stránku můžeme napsat pomocí mřížky.

[% #toto je komentář %]

Pomocí META lze nastavit například titulek

[% META title = "titulek" -%]

Chceme-li vložit do šablony jinou šablonu, použijeme příkaz INCLUDE. Příkladem může být vkládání HTML hlavičky.

[% INCLUDE hlavicka titulek="Moje WWW" %]

V souboru hlavicka.tt pak může být tento obsah.

<html>
<head><title>[% titulek %]</title></head>
<body>

Zpracování argumentů

Upravíme-li podprogram hello vhodným způsobem, budeme moci pracovat s argumenty. Ale co to vlastně argumentu v Catalyst aplikaci jsou?

Argumenty jsou součástí URL adresy a zadávají se tak, že vypadají jako jména adresářů. Jsou oddělené lomítky a uživatel vůbec nepozná, že jde o argumenty. Voláme-li například URL http://localhost:3000/hello/arg1/arg2/arg3, ve skutečnosti se provádí naše procedura hello a té jsou předány navíc tři argumenty arg1, arg2, arg3. Catalyst je v tomto směru inteligentní, takže si poradí s různými cestami a atributy. Samozřejmě je třeba si dát o to větší pozor na kolize.

Modifikujme náš podprogram hello tak, abychom předali do šablony argumenty.

sub hello : Global {
    my ($self, $c, @args) = @_;
    $c->stash->{template} = "hello.tt";
    $c->stash->{neco}     = "@args";
}

Připomeňme, že proměnná typu pole se do řetězce implicitně konvertuje tak, že se rozdělí na prvky oddělené mezerami. Šabloně tedy posíláme řetězec "arg1 arg2 arg3".

TTSite

View typu TTSite vytváří přednastavenou šablonu webu, obsahující hlavičky, patičky, CSS styly apod., kterou lze později různými způsoby konfigurovat. View TTSite vytvoříme standardně následujícím příkazem.

$ catalyst.pl Site
$ cd Site
$ perl script/site_create.pl view TT TTSite

Struktura adresáře root se nyní při použití TTSite lehce liší. root obsahuje tři podadresáře.

  • static - pro uchovávání něměnných souborů, například obrázků
  • src - zde jsou šablony
  • lib - konfigurační soubory, hlavičky, patičky atd.

Jako ukázku TTSite vytvoříme opět jen úvodní stránku. Nejprve tedy založíme šablonu v souboru root/src/index.tt2.

[% META title = "Toto je vytvoreno pomoci TTSite" %]
<h1>Nadpis</h1>
<p>text</p>

Nyní ještě zeditujeme soubor lib/Site/View/TT.pm. Nakonfigurujeme příponu šablon na .tt2 tak, že k argumentům metody config přidáme řádek TEMPLATE_EXTENSION=>".tt2".

Dále vložíme metodu sub index : Private {} do Controlleru lib/Site/Controller/Root.pm. To je vše, co je potřeba k vytvoření jednoduché stránky. Spustíme-li server, uvidíme v prohlížeči následující stránku.

Ukázka View typu Catalyst::View::TTSite

Kdybychom chtěli vzhled aplikace upravit, můžeme zabrousit do adresáře root/lib a zde lze udělat různé úpravy v nastavení. Taktéž lze editovat kaskádové styly v CSS šabloně root/src/ttsite.css.

View a Mason

Poznamenejme, že lze vytvořit také masonovský View. Masonu jsme se již obsáhle věnovali a proto si jen náznakem ukažme, jak postupovat.

Na úvod opět vytvoříme komponentu, ta bude tentokrát typu Mason.

$ perl script/projekt_create.pl view Mason Mason

Pak lze v šablonách využívat masonovské syntaxe. Argumenty odeslané do šablony pomocí $c->stash získáme pomocí bloku <%args>.

Zde je příklad jednoduché masonovské šablony, která zobrazuje přijatý argument.

<%args>
$argument
</%args>
Od Controlleru jsme ziskali toto: <% $argument %>

Více o použití Masonu v Catalystu lze nalézt v dokumentaci.

View a další možnosti

Existuje řada dalších pomocníků usnadňujících vytváření View od vytváření PNG obrázků, generování PDF, uživatelská rozhraní, PHP kódu až po posílání emailů. K nalezení jsou v archivu CPAN a stojí za to si alespoň pro představu projít seznam modulů, protože lze narazit na opravdu zajímavé projekty.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

11.5.2017 23:32 / lelo
Re: Problém se správcem balíčků

11.5.2017 5:45 / davd mašek
Re: Problém se správcem balíčků

10.5.2017 22:54 / lelo
Re: Problém se správcem balíčků

10.5.2017 22:19 / davd mašek
Problém se správcem balíčků

17.4.2017 19:15 / Jakub shoop
chyba

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze