CakePHP - trochu nutné teorie
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

CakePHP - trochu nutné teorieCakePHP - trochu nutné teorie

 

CakePHP - trochu nutné teorie

Google       Google       30. 1. 2008       13 014×

Náš poslední díl (pravda, už je tomu půl roku, co byl vydán) skončil u vypisování seznamu a jednotlivých záznamů z DB. K pochopení další látky je nutné si trošku více povědět o principech fungování Caku. Povíme si pořádně o hleperech a modelech.

Reklama
Reklama

Cake vám nabídne pomocnou ruku tam, kde se dá, a to samozřejmě i při vytváření formulářů. Pomocí helperů jednoduše vypíšete formulářové prvky a také je následně jednoduše uložíte.

Helpery

Jak již bylo řešeno, helpery jsou tu proto, aby nám usnadnily práci. V kontextu Caku mluvíme o pomocných třídách, které nám pomáhají generovat xHTML kód. Helpery jednoduše aktivujeme jejich deklarací v proměnné $helpers:

class ExampleController extends AppController
{

    public $helpers = array('Form', 'Html', 'Javascript');

    public function index()
    {
    }

}

Tímto nastavením jsme nahráli do view 3 helepry, a to Form, Html a Javascript. Prakticky to znamená, že nyní ve view jsou dostupné nové tři proměnné, stejně pojmenované. Přesněji, máme v oněch proměnných vytvořené objekty jednotlivých helperů:

$form->foo();
$html->foo();
$javascript->foo();

Nyní již můžeme normálně pracovat s objekty, volat jejich metody apod.

Ve výchozím nastavení se automaticky nahrává helper Html. Pokud budete potřebovat další helpery, tedy definovat znovu proměnnou $helpers, nezapomeňte, že seznam načítaných helperů přepisujete – ne přidáváte.

Jestliže nechcete nahrávat helpery žádné, uveďte prázdné pole.

Helper HTML

Do verze 1.2 se tato třída starala také o vytváření formulářů. Velmi dobrým krokem bylo oddělení této problematiky do samostatné třídy. Nyní v HtmlHelperu zbyly už jen metody pro základní html elementy.

Příklady použití:

<?php echo $html->docType('xhtml-strict') ?>
<html>
    <head>
        <?php echo $html->charset('utf-8') ?>
    </head>
    <!-- .... -->
</html>

Myslím, že situace, kdy tyto pomocníky využijete, jsou již jasné. Vřele doporučuji dále studovat pomocí API, u HtmlHelepru konkrétně na adrese http://api.cakephp.org/1.2.

Helper Form

Snad nejpoužívanějším helperem je třída FormHelper. Díky ní je vytváření formulářů mnohem snazší. Výhodou těchto Helperů je samozřejmě to, že vás nikdo nenutí je používat. Výhody (i nevýhody) si ale nakonec jistě zjistíte sami a budete používat jen to, co se hodí.

<?php
echo $form->text('User.first_name');
//<input name="data[User][first_name]" value="" type="text" />
?>

Zde jsme využili metody text, která nám vygeneruje základní input. Rovnou si všimněme předaného parametru. Cake pracuje u všech sloupců také se jménem tabulky. 'User.first_name' tedy znamená, že máme na mysli sloupce first_name z tabulky users, ke které je vázána modelová třída User.

Nyní ale přichází Cake s mnohem zajímavější nabídkou, s automatickým rozpoznáním typu vstupního pole podle typu databázového sloupce. Samozřejmě, někdy si prostě chcete typ vstupního pole určit sami, ale pro zbytek případů je tu metoda input().

<?php
// predpoklad: sloupec first_name je typu VARCHAR(254)

echo $form->input('User.first_name')
//<input name="data[User][first_name]" value="" type="text" />
?>

Výhoda tohoto přístupu je taková, že pokud se např. rozhodnete umožnit zadávat uživateli delší text, a změníte typ sloupce na TEXT, automaticky za vás Cake vygeneruje prvek textarea.

Opět doporučuji případné studium API manuálu pro třídu FormHelper. Problematice vytváření formulářů se budeme podrobně věnovat v příštím díle, takže pokud jste pochopili, ale chcete více, počkejte si na příští díl.

Formát dat vrácených FormHelperem

Helpery za nás generují html tagy, ale, jak jste si mohli všimnout v dnešních ukázkách, také vytvářejí speciální název vstupních tagů: data[User][first_name]. Cake tedy od PHP získá výsledky již ve formátu pole a tak je vám taky nabídne.

Výhoda tohoto formátu je ta, že s ním pracuje Model, když bude vaše data ukládat. Více opět až příště.


Dnes jsme si řekli lehký úvod k helperům, formulářům. Příště se na ně vrhneme přímo po hlavě a hlavně prakticky – dokončíme naši CRUD aplikaci.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jan ŠkrášekHonza pracuje jako webdeveloper, věnuje se vývoji Nette\Database a Nextras komponentám. Mnoho času věnuje komunitnímu portálu signály.cz. Honza je taky fanouškem XML technologií.
Web     Twitter    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý