<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IMS Blog - blog o modernom programovaní od Tibor Piňo &#187; cookbook</title>
	<atom:link href="http://ims.rockretail.com/tag/cookbook/feed/" rel="self" type="application/rss+xml" />
	<link>http://ims.rockretail.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 18 Feb 2010 10:11:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Validácia vstupných dát v CakePHP &#8211; 2. časť</title>
		<link>http://ims.rockretail.com/2008/04/23/validacia-vstupnych-dat-v-cakephp-2-cast/</link>
		<comments>http://ims.rockretail.com/2008/04/23/validacia-vstupnych-dat-v-cakephp-2-cast/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 12:55:54 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[validácia]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[V prvej časti seriálu o validácii dát v CakePHP sme si podrobne predstavili základy validácie. V dnešnej časti budeme pokračovať a detailne si predstavíme vstavané validačné pravidlá a vytváranie vlastných pravidiel.
Vstavané validačné pravidlá
CakePHP disponuje množstvom najčastejšie používaných validačných pravidiel, ktoré robia validáciu veľmi jednoduchou. My si teraz detailne predstavíme všetky preddefinované pravidlá, ktoré môže programátor [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ims.rockretail.com/articles/2008/04/16/validacia-vstupnych-dat-v-cakephp-1-cast">V prvej časti seriálu o validácii dát v CakePHP</a> sme si podrobne predstavili základy validácie. V dnešnej časti budeme pokračovať a detailne si predstavíme vstavané validačné pravidlá a vytváranie vlastných pravidiel.<span id="more-40"></span></p>
<h2>Vstavané validačné pravidlá</h2>
<p>CakePHP disponuje množstvom najčastejšie používaných validačných pravidiel, ktoré robia validáciu veľmi jednoduchou. My si teraz detailne predstavíme všetky preddefinované pravidlá, ktoré môže programátor jednoducho používať bez toho, aby ich musel priamo vytvárať.</p>
<p>Ukážky kódov sú prevzaté z <a href="http://book.cakephp.org/view/125/data-validation">Cookbook: Data Validation</a></p>
<h3>alphaNumeric</h3>
<p>Dáta v danom inpute musia obsahovať iba písmená a číslice</p>
<pre><code>var $validate = array(
    'login' =&gt; array(
        'rule' =&gt; 'alphaNumeric',
        'message' =&gt; 'Usernames must only contain letters and numbers.'
    )
);</code></pre>
<h3>between</h3>
<p>Určuje rozmedzie počtu znakov daného inputu. Určuje minimálnu a maximálnu dĺžku reťazca v inpute</p>
<pre><code>var $validate = array(
    'password' =&gt; array(
        'rule' =&gt; array('between', 5, 15),
        'message' =&gt; 'Passwords must be between 5 and 15 characters long.'
    )
);</code></pre>
<h3>blank</h3>
<p>Určuje, že daný input musí byť prázdny alebo môže obsahovať iba biele znaky. Medzi biele znaky patria medzera, tabulátor a nový riadok</p>
<pre><code>var $validate = array(
    'id' =&gt; array(
        'rule' =&gt; 'blank',
        'on' =&gt; 'create'
    )
);</code></pre>
<h3>cc</h3>
<p>Toto pravidlo sa používa na kontrolu, či daný input obsahuje správne čísla kreditných kariet. Prijíma 3 argumenty na základe toho, aké čísla kreditných kariet chceme validovať, a to konkrétne <em>type</em>, <em>deep</em> a <em>regex</em>.</p>
<p>Pre kľúč <em>type</em> môžu byť pridelené dve hodnoty, a to <em>fast</em>, <em>all</em> alebo niektoré z nasledujúcich:</p>
<ul>
<li>bankcard</li>
<li>diners</li>
<li>disc</li>
<li>electron</li>
<li>enroute</li>
<li>jcb</li>
<li>maestro</li>
<li>mc</li>
<li>solo</li>
<li>switch</li>
<li>visa</li>
<li>voyager</li>
</ul>
<p>Ak je kľúč <em>type</em> nastavený na hodnotu <em>fast</em>, budú sa automaticky kontrolovať čísla majoritných kreditných kariet. Ak je kľúč <em>type</em> nastavený na hodnotu <em>all</em> budú sa kontrolovať všetky prednastavené formáty čísiel kreditných kariet. Taktiež tomuto kľúču môžete priradiť pole, kde určíte, oproti ktorým kreditným kartám sa bude validácia vykonávať.</p>
<p>Kľúč <em>deep</em> by mal byť nastavený ako boolean hodnota. Defaultne je táto hodnota nastavená na <em>false</em>. Ak však nastavíme danú hodnotu na <em>true</em>, na validáciu sa použije <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Luhn algoritmus</a></p>
<p>Kľúč <em>regex</em> vám umožňuje zadať vlastný regulárny výraz. I keď sú možnosti validácie kreditných kariet široké, určite sa nám v niektorých prípadoch môže kľúč <em>regex</em> hodiť a tým pádom nie sú naše možnosti limitované na prednastavené hodnoty</p>
<pre><code>var $validate = array(
    'ccnumber' =&gt; array(
        'rule' =&gt; array('cc', array('visa', 'maestro'), false, null),
        'message' =&gt; 'The credit card number you supplied was invalid.'
    )
);</code></pre>
<h3>comparison</h3>
<p>Toto kritérium umožňuje porovnávať číselné hodnoty. Podporované operácie sú štandardné matematické operácie a to <em>väčší</em>, <em>menší</em>, <em>väčší alebo rovný</em>, <em>menší alebo rovný</em>, <em>rovnajúci sa</em> a <em>nerovnajúci sa</em></p>
<pre><code>var $validate = array(
    'age' =&gt; array(
        'rule' =&gt; array('comparison', '&gt;=', 18),
        'message' =&gt; 'Must be at least 18 years old to qualify.'
    )
);

var $validate = array(
    'age' =&gt; array(
        'rule' =&gt; array('comparison', 'greater or equal', 18),
        'message' =&gt; 'Must be at least 18 years old to qualify.'
    )
);</code></pre>
<h3>date</h3>
<p>Určuje správny formát dátumu. Prijíma jeden parameter, ktorým určujeme požadovaný formát vkladaného dátumu. Ako parameter smie byť použitý jeden z nasledujúcich kľú­čov</p>
<ul>
<li>‘dmy’ e.g. 27–12–2006 or 27–12–06</li>
<li>‘mdy’ e.g. 12–27–2006 or 12–27–06</li>
<li>‘ymd’ e.g. 2006–12–27 or 06–12–27</li>
<li>‘dMy’ e.g. 27 December 2006 or 27 Dec 2006</li>
<li>‘Mdy’ e.g. December 27, 2006 or Dec 27, 2006</li>
<li>‘My’ e.g. (December 2006 or Dec 2006)</li>
<li>‘my’ e.g. 12/2006 or 12/06</li>
</ul>
<p>Ak nie je žiadny kľúč určený, defaultne sa použije kľúč <em>ymd</em>.</p>
<pre><code>var $validate = array(
    'born' =&gt; array(
        'rule' =&gt; 'date',
        'message' =&gt; 'Enter a valid date in YY-MM-DD format.',
        'allowEmpty' =&gt; true
    )
);</code></pre>
<h3>decimal</h3>
<p>Určuje správny formát desatinného čísla. Prijíma jeden parameter, ktorým určujeme počet čísiel za desatinnou bodkou (pozor: podporovaný je len anglický formát a desatinná čiarka nie je podporovaná). Ak tento parameter nie je určený, každé číslo, ktoré nebude mať za desatinnou bodkou aspoň jedno číslo, skončí chybou</p>
<pre><code>var $validate = array(
    'price' =&gt; array(
        'rule' =&gt; array('decimal', 2)
    )
);</code></pre>
<h3>email</h3>
<p>Určuje správny formáta email adresy. Prijíma jeden parameter ako <em>bolean</em> hodnotu, ktorým určujeme, či sa má kontrolovať aj doména uvedená v email adrese.</p>
<pre><code>var $validate = array('email' =&gt; array('rule' =&gt; 'email'));

var $validate = array(
    'email' =&gt; array(
        'rule' =&gt; array('email', true),
        'message' =&gt; 'Please supply a valid email address.'
    )
);</code></pre>
<h3>equalTo</h3>
<p>Určuje akej hodnote a akému typu sa má rovnať reťazec z daného inputu</p>
<pre><code>var $validate = array(
    'food' =&gt; array(
        'rule' =&gt; array('equalTo', 'cake'),
        'message' =&gt; 'This value must be the string cake'
    )
);</code></pre>
<h3>extension</h3>
<p>Určuje správnu príponu ako napr. <em>.jpg</em> alebo <em>.png</em>. Umožňuje taktiež určiť aj viac prípon pre daný input, a to vložením požadovaných prípon do poľa</p>
<pre><code>var $validate = array(
    'image' =&gt; array(
        'rule' =&gt; array('extension', array('gif', 'jpeg', 'png', 'jpg'),
        'message' =&gt; 'Please supply a valid image.'
    )
);</code></pre>
<h3>file</h3>
<p>Toto validančé kritérium zatiaľ nie je definované.</p>
<h3>ip</h3>
<p>Určuje správny formát IPv4 adresy</p>
<pre><code>var $validate = array(
    'clientip' =&gt; array(
        'rule' =&gt; 'ip',
        'message' =&gt; 'Please supply a valid IP address.'
    )
);</code></pre>
<h3>minLength</h3>
<p>Určuje minimálnu dĺžku znakov, ktorú musí odosielaný reťazec obsahovať</p>
<pre><code>var $validate = array(
    'login' =&gt; array(
        'rule' =&gt; array('minLength', '8'),
        'message' =&gt; 'Usernames must be at least 8 characters long.'
    )
);</code></pre>
<h3>maxLength</h3>
<p>Určuje maximálnu dĺžku znakov, ktorú musí odosielaný reťazec obsahovať</p>
<pre><code>var $validate = array(
    'login' =&gt; array(
        'rule' =&gt; array('maxLength', '15'),
        'message' =&gt; 'Usernames must be no larger than 15 characters long.'
    )
);</code></pre>
<h3>money</h3>
<p>Toto validančé kritérium zatiaľ nie je definované.</p>
<h3>multiple</h3>
<p>Toto validančé kritérium zatiaľ nie je definované.</p>
<h3>numeric</h3>
<p>Určuje, či sa jedná o číslo v správnom formáte</p>
<pre><code>var $validate = array(
    'cars' =&gt; array(
        'rule' =&gt; 'numeric',
        'message' =&gt; 'Please supply the number of cars.'
    )
);</code></pre>
<h3>phone</h3>
<p>Určuje správny formát telefónneho čísla vo formáte US. Pre kontrolu čísla v inom formáte prijíma ako druhý parameter regulárny výraz, ktorým môžeme určiť správny formát národného čísla</p>
<pre><code>var $validate = array(
    'phone' =&gt; array(
        'rule' =&gt; array('phone', null, 'us')
    )
);</code></pre>
<h3>postal</h3>
<p>Určuje správny formát zip code. Jedná sa o obdobu PSČ. Prednastavené sú čísla z UK, US a Kanady. Pre kontrolu čísla v inom formáte prijíma ako druhý parameter regulárny výraz, ktorým môžeme určiť správny formát národného čísla</p>
<pre><code>var $validate = array(
    'zipcode' =&gt; array(
        'rule' =&gt; array('postal', null, 'us')
    )
);</code></pre>
<h3>range</h3>
<p>Určuje, či daná hodnota spadá do určeného rozsahu.</p>
<pre><code>var $validate = array(
    'number' =&gt; array(
        'rule' =&gt; array('range', 0, 10),
        'message' =&gt; 'Please enter a number between 0 and 10'
    )
);</code></pre>
<h3>ssn</h3>
<p>Určuje formát social security number. Jedná sa o obdobu rodného čísla. Pre kontrolu čísla v inom formáte prijíma ako druhý parameter regulárny výraz, ktorým môžeme určiť správny formát národného čísla.</p>
<pre><code>var $validate = array(
    'ssn' =&gt; array(
        'rule' =&gt; array('ssn', null, 'us')
    )
);</code></pre>
<h3>url</h3>
<p>Určuje správny formát URL adresy. Podporované protokoly sú <em>http(s)</em>, <em>ftp(s)</em>, <em>news</em> a <em>gopher</em>.</p>
<pre><code>var $validate = array(
    'website' =&gt; array(
        'rule' =&gt; 'url'
    )
);</code></pre>
<h2>Vlastné validačné pravidlá</h2>
<p>Ako sme už mohli zistiť, prednastavené pravidlá nám poskytujú vysoký komfort pri validácii dát bez nutnosti písať vlastné pravidlá. Určite však niekedy nastane situáciu, že budeme nútený napísať vlastné validačné pravidlo. K tomu nám CakePHP ponúka dve možnosti, jednou je definovanie regulárneho výrazu, druhou možnosťou je vytvoriť vlastnú metódu.</p>
<h3>Regulárny výraz ako validačné pravidlo</h3>
<p>Pre tých, ktorý majú v láske regulárne výrazy nie je nič jednoduchšie, ako definovať vlastné pravidlá pomocou nich. Treba však poznamenať, že je to najrýchlejší spôsob, ako vlastné pravidlá vytvárať</p>
<pre><code>var $validate = array(
    'login' =&gt; array(
        'rule' =&gt; array('custom', '/[a-z0-9]{3,}$/i'),
        'message' =&gt; 'Only letters and integers, min 3 characters'
    )
);</code></pre>
<p>Príklad vyššie nám ukazuje, že input <em>login</em> môže obsahovať iba číslice a písmená, a musí obsahovať minimálne 3 znaky.</p>
<h3>Vlastná validačná metóda</h3>
<p>V niektorých prípadoch môže byť však regulárny výraz nedostatočný. Predstavme si situáciu, že potrebujeme zaistiť, že <em>login</em> je unikátny. K tomuto nám dokonale poslúži vlastná validačná metóda</p>
<pre><code>&lt;?php
class User extends AppModel {
    var $name = 'User';

    var $validate = array(
        'login' =&gt; array(
            'rule' =&gt; array('checkUnique', 'login'),
            'message' =&gt; 'Login name already taken.'
        )
    );

    function checkUnique($data, $fieldName) {
        $valid = false;
        if(isset($fieldName) &amp;&amp; $this-&gt;hasField($fieldName))
        {
            $valid = $this-&gt;isUnique(array($fieldName =&gt; $data));
        }
        return $valid;
   }
}
?&gt;</code></pre>
<p>Ak by ste chceli predávať parametre našej novej validačnej metóde, pridajte extra element do poľa <em>rule</em> (v ukážke <em>login</em>) a v metóde daný element zachyťte ako ďalší parameter za parametrom <em>$data</em> (v ukážke <em>$fieldName</em>)</p>
<p>Validačnú metódu môžeme umiestniť buď do modelu, ale rovnako i do behavior, ktoré model implementuje.</p>
<p>Validačnou metódou môžeme prepísať prednastavené validačné pravidlá a to tým, že ich pomenujeme rovnakým názvom. Napríklad by sme v našom modely vytvorili metódu nazvanú <em>file</em>, znamenalo by to, že sme tým prepísali metódu z triedy <em>Validation</em> a pri použití validačného pravidla <em>file</em> sa bude volať nami vytvorená metóda z nášho modelu.</p>
<p>Týmto je náš článok u konca. V poslednej časti tohto miniseriálu si ukážeme ako validovať dáta, ktoré nie sú namapované na databázovú tabuľku, a taktiež si ukážeme ucelený príklad jednoduchej validácie.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2008/04/23/validacia-vstupnych-dat-v-cakephp-2-cast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Validácia vstupných dát v CakePHP &#8211; 1. časť</title>
		<link>http://ims.rockretail.com/2008/04/16/validacia-vstupnych-dat-v-cakephp-1-cast/</link>
		<comments>http://ims.rockretail.com/2008/04/16/validacia-vstupnych-dat-v-cakephp-1-cast/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 17:41:33 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[validácia]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Validácia vstupných dát je jedna z najdôležitejších častí každej aplikácie. Pomocou validácie máme zaručené, že dáta vstupujúce do našej aplikácie odpovedajú nastaveným pravidlám a nebudú narušovať konzistenciu našej aplikácie. Vo verzii 1.2 CakePHP prichádza s prepracovanou validáciou a my si v tomto článku podrobne vysvetlíme všetky jej aspekty.
Ako motivačný príklad si predstavme situáciu, že užívateľ [...]]]></description>
			<content:encoded><![CDATA[<p>Validácia vstupných dát je jedna z najdôležitejších častí každej aplikácie. Pomocou validácie máme zaručené, že dáta vstupujúce do našej aplikácie odpovedajú nastaveným pravidlám a nebudú narušovať konzistenciu našej aplikácie. Vo verzii 1.2 CakePHP prichádza s prepracovanou validáciou a my si v tomto článku podrobne vysvetlíme všetky jej aspekty.<span id="more-39"></span></p>
<p>Ako motivačný príklad si predstavme situáciu, že užívateľ odosiela dáta z prihlasovacieho formulára. V danom formulári chceme určiť, že prihlasovacie meno bude minimálne 5 znakov dlhé a že heslo nebude prázdne. CakePHP takúto situáciu rieši veľmi elegantne a definovanie validačných pravidiel robí veľmi jednoduchým.</p>
<p>Prvým krokom k validácii dát je vytvorenie validačných pravidiel v modely. To docielime použitím poľa <em>validate</em> v našom modely. Kód by mohol vyzerať následovne</p>
<pre><code>&lt;?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' =&gt; 'alphaNumeric'
    );
}
?&gt;</code></pre>
<p>Na ukážke vyššie môžeme vidieť definovanie pravidiel pre validáciu. Príklad definuje pravidlo pre input pomenovaný <em>login</em> a určuje, že z daného inputu bude prijímaný vstup v podobe písmen a číslic. Definovaním takýchto pravidiel umožňujeme CakePHP automaticky zobrazovať chybové hlášky pri daných vstupných poliach v prípade, že dané pole neobsahuje očakávaný vstup a tým uľahčuje programátorovi množstvo času. V našom konkrétnom prípade by odosielanie formulára skončilo chybovou hláškou vtedy, ak by sme do daného inputu vložili znak, ktorý by nebol buď písmeno alebo číslica, a snažili by sme sa takýto formulár odoslať.</p>
<p>CakePHP má množstvo prednastavených validačných pravidiel a ich použitie je veľmi jednoduché. Prednastavené pravidlá nám okrem iného umožňujú kontrolovať email adresu, url, dátum a iné často používané pravidlá (všetky pravidlá si detailne predstavíme v nasledujúcich častiach textu). Na ďalšom príklade môžeme vidieť komplexný príklad, ktorý nám demonštruje možnosti validácie v CakePHP. Príklad je prevzatý z <a href="http://book.cakephp.org/view/125/data-validation">Cookbook: Data Validation</a></p>
<pre><code>&lt;?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' =&gt; array(
            'alphanumeric' =&gt; array(
                'rule' =&gt; 'alphaNumeric',
                'required' =&gt; true,
                'message' =&gt; 'Alphabets and numbers only'
                ),
            'between' =&gt; array(
                'rule' =&gt; array('between', 5, 15),
            'message' =&gt; 'Between 5 to 15 characters'
            )
        ),
        'password' =&gt; array(
            'rule' =&gt; array('minLength', '8'),
            'message' =&gt; 'Mimimum 8 characters long'
        ),
        'email' =&gt; 'email',
        'born' =&gt; array(
            'rule' =&gt; 'date',
            'message' =&gt; 'Enter a valid date',
            'allowEmpty' =&gt; true
        )
    );
}
?&gt;</code></pre>
<p>Príklad vyššie nám ukazuje, ako priradiť niekoľko pravidiel jednému inputu. Môžeme vidieť, že input <em>login</em> má definované dve pravidlá. Prvé nám hovorí, že daný vstup môže obsahovať len písmená a číslice, druhé pravidlo určuje, že <em>login</em> môže mať dĺžku od 5 do 15 znakov. Taktiež môžeme na príklade pozorovať, ako k jednotlivým inputom zobraziť chybové správy v prípade, ak je validácia neúspešná a daný vstup nevyhovuje určeným pravidlám. Ak však vstavané validačné pravidlá nevyhovujú vašim predstavám, samozrejme si môžete vytvoriť vlastné podľa svojich predstáv.</p>
<p>Teraz už máme veľmi dobrú a ucelenú predstavu o validácii v CakePHP a o jej možnostiach. Keďže máme niekoľko možností, ako definovať jednotlivé pravidlá pre daný vstup, poďme si ich bližšie predstaviť.</p>
<h3>Základné pravidlo</h3>
<p>Ako názov napovedá, jedná sa o základný a najjednoduchší spôsob definovania validačných pravidiel. Syntax je nasledovná</p>
<pre><code>var $validate = array('fieldName' =&gt; 'rule');</code></pre>
<p>Ako môžeme vidieť, validačné pole obsahuje dvojicu, a to <em>fieldName</em>, čo je názov input prvku v našom formulári a <em>rule</em>, čo môže byť napríklad vstavané pravidlo alebo regulárny výraz.</p>
<h3>Jedno pravidlo pre input</h3>
<p>Tento spôsob je rozšírením základného pravidla a poskytuje nám širšie možnosti pri validovaní vstupu. Príklad je opäť prevzatý z <a href="http://book.cakephp.org/view/125/data-validation">Cookbook: Data Validation</a></p>
<pre><code>var $validate = array(
    'fieldName1' =&gt; array(
        'rule' =&gt; 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
        'required' =&gt; true,
        'allowEmpty' =&gt; false,
        'on' =&gt; 'create', // or: 'update'
        'message' =&gt; 'Your Error Message'
    )
);</code></pre>
<p>Ako môžeme vidieť, jednému inputu je priradené pole s piatimi kľúčmi. V ukážke je zobrazený len jeden input, samozrejme ich môžeme definovať ľubovoľne a každý z nich môže obsahovať pole s kľúčmi s vlastnými hodnotami. Poďme si teda priblížiť, čo dané kľúče znamenajú</p>
<h4>rule</h4>
<p>Tento kľúč definuje validačné pravidlo pre daný input. Tento kľúč nie je omedzený len na použitie jedného pravidla, ale môže taktiež obsahovať pole so vstavanými validačnými pravidlami, názov metódy v modely, názov metódy zo základnej triedy Validation alebo vlastný regulárny výraz.</p>
<h4>required</h4>
<p>Tomuto kľúču by mala byť priradená boolean hodnota. Tento kľúč nám určuje, či sa má vo formulári nachádzať daný input alebo nie. Ak teda nastavíme hodnotu na true, to znamená, že daný formulár pri odoslaní musí tento input prvok obsahovať, či už prázdny alebo nie. Pozor však, tento kľúč nám neurčuje, či musí daný input obsahovať dáta alebo nie, hovorí nám len, že daný prvok vo formulári musí byť.</p>
<h4>allowEmpty</h4>
<p>Tomuto kľúču by mala byť priradená boolean hodnota. Tento kľúč nám určuje, či daný input musí obsahovať dáta alebo nie. Ak teda hodnotu tohto kľúča nastavíme na true, to znamená, že daný input nesmie byť odoslaný ako prázdny a musí obsahovať dáta.</p>
<h4>on</h4>
<p>Tento kľúč nám umožňuje určiť, pri akých akciách sa má daná validácia vykonávať. V našom príklade sme určili, že daná validácia sa bude vykonávať pri akcii <em>create</em> a pri akcii <em>update</em> bude validácia neaktívna. Ak je dané kľúč nastavený na <em>null</em>, validácia sa bude vykonávať pri oboch akciách.</p>
<h4>message</h4>
<p>Tento kľúč nám umožňuje určiť vlastnú chybovú hlášku pre daný input.</p>
<h3>Viac pravidiel pre input</h3>
<p>Tento spôsob sme si už naznačili v časti, kde sme si predstavovali validáciu v CakePHP. Poďme sa pozrieť na nasledujúci príklad</p>
<pre><code>var $validate = array(
    'login' =&gt; array(
       'alphanumeric' =&gt; array(
            'rule' =&gt; 'alphaNumeric',
            'required' =&gt; true,
            'message' =&gt; 'Alphabets and numbers only'
             ),
        'between' =&gt; array(
            'rule' =&gt; array('between', 5, 15),
            'message' =&gt; 'Between 5 to 15 characters'
        )
    )
)</code></pre>
<p>Môžeme vidieť, že vstupné pole <em>login</em> má definované dve pravidlá, prvé nám hovorí, že daný vstup môže obsahovať len písmená a číslice, druhé pravidlo určuje, že <em>login</em> môže mať dĺžku od 5 do 15 znakov. V daných pravidlách môžeme využiť taktiež kľúče, ktoré sme si predstavili v časti <strong>Jedno pravidlo pre input</strong>.</p>
<p>Týmto je náš článok u konca. V ďalšej časti sa detailne pozrieme na vstavané validačné pravidlá, ktoré nám ponúka CakePHP a ukážeme si ucelený príklad, ako celý mechanizmus validácie funguje.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2008/04/16/validacia-vstupnych-dat-v-cakephp-1-cast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kde hľadať informácie o CakePHP</title>
		<link>http://ims.rockretail.com/2008/04/08/kde-hada-informcie-o-cakephp/</link>
		<comments>http://ims.rockretail.com/2008/04/08/kde-hada-informcie-o-cakephp/#comments</comments>
		<pubDate>Tue, 30 Nov 1999 00:00:00 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Tipy a triky]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[google group]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[CakePHP disponuje pomerne rozsiahlou komunitou. Článok uvádza niekoľko zaujímavých zdrojov, kde môžete nájsť množstvo informácií a odpovedí na svoje otázky.
The Cookbook
 http://book.cakephp.org
Ak sa dostanete na toto miesto, začali ste na správnom mieste. Tento manuál by mal byť pravdepodobne prvým miestom, kde dostanete odpovede na vaše prvotné otázky. CookBook sa snaží poskytnúť ucelený pohľad na všetky [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHP disponuje pomerne rozsiahlou komunitou. Článok uvádza niekoľko zaujímavých zdrojov, kde môžete nájsť množstvo informácií a odpovedí na svoje otázky.<span id="more-38"></span></p>
<h2>The Cookbook</h2>
<p> <a href="http://book.cakephp.org">http://book.cakephp.org</a></p>
<p>Ak sa dostanete na toto miesto, začali ste na správnom mieste. Tento manuál by mal byť pravdepodobne prvým miestom, kde dostanete odpovede na vaše prvotné otázky. CookBook sa snaží poskytnúť ucelený pohľad na všetky základné rysy frameworku a predstaviť ich z pohľadu začiatočníka. Manuál a API sú k dispozícii online.</p>
<h2>The API</h2>
<p> <a href="http://api.cakephp.org/1.2/classes.html">http://api.cakephp.org/…classes.html</a></p>
<p>Priamo k veci a priamo od vývojárov jádra. CakePHP API (Application Programming Interface) je najviac obsiahla dokumentácia všetkých interných detailov fungovania frameworku. Je to priama referenčná príručka kódu frameworku. Mnohým vývojárom poskytuje najhodnotnejší zdroj informácií.</p>
<h2>IRC kanál</h2>
<p> #cakephp @ irc.freenode.net</p>
<p>Pre tých čo potrebujú okamžitú radu môžu využiť oficiálny CakePHP IRC kanál. Takmer vždy tam nájdete niekoho z vývojového týmu, najmä počas denného svetla v amerike <img src='http://ims.rockretail.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  alebo iných skúsených užívateľov, ktorí sa vám budú snažiť ochotne pomôcť pri riešení vašich problémov. S najväčšou pravdepodobnosťou sa dohovoríte len po anglicky, avšak nie je vylúčené, že nájdete aj niekoho z vášho okolia.</p>
<h2>The Bakery</h2>
<p> <a href="http://bakery.cakephp.org">http://bakery.cakephp.org</a></p>
<p>Tzv. pekáreň, v ktorej môžete nájsť množstvo tutoriálov, štúdií a príkladov kódu. Obsah je vytváraný samotnou komunitou a môžete tu nájsť množstvo cenných rád, ktoré riešia konkrétne problémy. A to všetko aj s hotovými kódmi.</p>
<h2>CakeForge</h2>
<p> <a href="http://www.cakeforge.org">http://www.cakeforge.org</a></p>
<p>CakeForge je ďalší zdroj pre vývojárov, ktorý môžete použiť na hosťovanie svojich projektov a zdieľať ich tak s ostatnými. Ak hľadáte (alebo chcete zdieľať) svoje komponenty alebo pluginy, CakeForge je to pravé pre vás.</p>
<h2>The Official CakePHP website</h2>
<p> <a href="http://www.cakephp.org">http://www.cakephp.org</a></p>
<p>Oficiálna stránka je vždy najlepšie miesto pre návštevu. Poskytuje prehľad o najnovších verziách CakePHP, množstvo zaujímavostí a noviniek z vývoja. Oficiálna stránka je najlepším miestom ako získať najnovšiu verziu tohto frameworku.</p>
<h2>The Google Group</h2>
<p> <a href="http://groups.google.com/group/cake-php">http://groups.google.com/group/cake-php</a></p>
<p>CakePHP disponuje taktiež veľmi aktívnou Google Group. Je to skvelé miesto pre vyhľadávanie v archivovaných odpovediach, často kladených otázkach a odpovedí na aktuálne problémy. Táto skupina je v anglickom jazyku a s iným jazykom ako anglickým sa tu bohužiaľ nedohovoríte.</p>
<h2>Slovenské a české zdroje</h2>
<p><a href="http://ims.rockretail.com">IMS Blog</a> – môj blog, ktorému sa aktívne venujem <img src='http://ims.rockretail.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br />
<a href="http://www.abclinuxu.cz/clanky/programovani/cakephp-tvorime-cms-1-uvod">Abclinuxu.cz</a> – seriál na známom linuxovom servery <a href="http://www.abclinuxu.cz">www.abclinuxu.cz</a><br />
<a href="http://programujte.com/index.php?akce=clanek&amp;cl=2007061601-cakephp-zaciname-s-frameworkem">Programujte.com</a> – seriál na servery <a href="http://www.programujte.com">www.programujte.com</a></p>
<p>Ak viete ešte o nejakých zaujímavých zdrojoch informácií o CakePHP, neváhajte sa s nimi podeliť v diskusii k článku.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2008/04/08/kde-hada-informcie-o-cakephp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MVC model view controller v CakePHP</title>
		<link>http://ims.rockretail.com/2008/04/01/mvc-model-view-controller-v-cakephp/</link>
		<comments>http://ims.rockretail.com/2008/04/01/mvc-model-view-controller-v-cakephp/#comments</comments>
		<pubDate>Tue, 30 Nov 1999 00:00:00 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[Model View Controller]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[V dnešnom článku si detailne priblížime pohľad na celkovú architektúru frameworku a tou je architektúra Model View Controller. Porozumenie MVC je pre vývoj v CakePHP zásadné a tento článok vás ponorí do tajov tohto návrhového vzoru z pohľadu daného frameworku.
Článok je voľne inšpirovaný v Cookbook::Un­derstanding Model-View-Controller. Týmto by autor chcel požiadať ostatných, ktorí by mali [...]]]></description>
			<content:encoded><![CDATA[<p>V dnešnom článku si detailne priblížime pohľad na celkovú architektúru frameworku a tou je architektúra Model View Controller. Porozumenie MVC je pre vývoj v CakePHP zásadné a tento článok vás ponorí do tajov tohto návrhového vzoru z pohľadu daného frameworku.<span id="more-36"></span></p>
<p>Článok je voľne inšpirovaný v <a href="http://book.cakephp.org/view/10/understanding-model-view-contr">Cookbook::Un­derstanding Model-View-Controller.</a> Týmto by autor chcel požiadať ostatných, ktorí by mali záujem na preklade Cookbook do slovenského jazyka, nech vyjadria svoj postoj v diskusii k článku.</p>
<h2>Úvod</h2>
<p>CakePHP je postavený na návrhovom vzore <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC.</a> Pri programovaní aplikácií postavených na tomto návrhovom vzore, MVC rozdeľuje danú aplikáciu na 3 základné vrstvy</p>
<ol>
<li>Model – reprezentuje dáta aplikácie</li>
<li>View – zobrazuje dáta modelu</li>
<li>Controller – prijíma požiadavky od klienta a na základe konkrétnych požiadaviek riadi beh aplikácie</li>
</ol>
<div><img src="http://ims.rockretail.com/wp-content/uploads/2009/11/cakephpmvc.png" alt="" /></div>
<p>Obrázok znázorňuje request od klienta a jeho následné spracovanie v CakePHP. Pre ilustráciu si predstavme, že klient nazvaný „Ricardo“ klikol na odkaz „Buy A Custom Cake Now!“ na domovskej stránke našej web aplikácie.</p>
<ol>
<li>Ricardo klikol na odkaz smerujúci na adresu <a href="http://www.example.com/cakes/buy">www.example.com/cakes/buy</a> a jeho prehliadač vytvoril request na váš webový server.</li>
<li>Dispatcher kontruluje request URL (/cakes/buy) a smeruje daný request na správny controller.</li>
<li>Controller vykonáva určitú logiku aplikácie. Pre príklad, controller môže kontrolovať, či je Ricardo prihlásený.</li>
<li>Controller taktiež používa modely na získanie prístupu k aplikačným dátam. Modely najčastejšie reprezentujú databázové tabuľky, ale môžu byť taktiež reprezentované LDAP entitami, RSS kanálmi alebo súbormi v systéme. V našom príklade controller používa model na získanie Ricardových posledných nákupov z databázy.</li>
<li>Controller okrem iného predáva dáta do ďalšej časti MVC architektúry nazvanej View. View vezme dáta a pripraví ich pre zobrazenie v klientovi. Views sú v CakePHP najčastejšie vo formáte HTML, avšak môžu byť aj jednoducho vo formáte PDF, XML alebo v inom formáte.</li>
<li>Akonáhle view kompletne pripraví dáta pre zobrazenie, následne sú spracované dáta vrátené ako response do Ricardovho klienta.</li>
</ol>
<p>Takmer každý request do vašej aplikácie bude nasledovať obdobný postup, preto je dobré si daný postup poriadne zapamätať a samozrejme mu aj porozumieť.</p>
<h2>Výhody</h2>
<p>Prečo používať MVC? Pretože je to je ustálený návrhový vzor, ktorý pretvorí aplikáciu na udržateľný, modulárny a rýchlo sa vyvíjúci balík. Nové vlastnosti sú pridávané jednoducho a staré rysy dostávajú novú tvár. Modulárny a oddelený návrh taktiež umožňuje developerom a návrhárom pracovať súčasne, zahŕňa taktiež možnosť rychlého <a href="http://en.wikipedia.org/wiki/Software_prototyping">prototypovania.</a> Separácia taktiež umožňuje developerom robiť zmeny v jednej časti aplikácie bez ovplyvnenia zvyšných častí.</p>
<p>Ak ste nikdy predtým nevyvíjali aplikáciu touto cestou, určite to zaberie určitý čas zoznámiť sa s návrhovým vzorom MVC, ale som presvedčený, že ak tak raz urobíte, nikdy to nebude chcieť robiť inak.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2008/04/01/mvc-model-view-controller-v-cakephp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
