<?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; Články</title>
	<atom:link href="http://ims.rockretail.com/category/clanky/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>www.ie6nomore.com &#8211; ako ukončiť používanie Internet Explorer 6</title>
		<link>http://ims.rockretail.com/2010/02/03/www-ie6nomore-com-ako-ukoncit-pouzivanie-internet-explorer-6/</link>
		<comments>http://ims.rockretail.com/2010/02/03/www-ie6nomore-com-ako-ukoncit-pouzivanie-internet-explorer-6/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:35:06 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>

		<guid isPermaLink="false">http://ims.rockretail.com/?p=207</guid>
		<description><![CDATA[V poslednej dobe sa opäť začalo veľmi časťo diskutovať na tému podpory zastaralého internetového prehliadača Internet Explorer 6.
Google končí s podporou IE6
Všetko sa to začalo po tom, keď google oznámil v jednom blogovom zápise, že niektoré z jeho hlavných služieb prestanú v blízkej budúcnosti podporovať prehliadač Internet Explorer 6. Niet sa vôbec čomu čudovať, pretože [...]]]></description>
			<content:encoded><![CDATA[<p>V poslednej dobe sa opäť začalo veľmi časťo diskutovať na tému podpory zastaralého internetového prehliadača Internet Explorer 6.<span id="more-207"></span></p>
<h2>Google končí s podporou IE6</h2>
<p>Všetko sa to začalo po tom, keď google <a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html">oznámil</a> v jednom blogovom zápise, že niektoré z jeho hlavných služieb prestanú v blízkej budúcnosti podporovať prehliadač Internet Explorer 6. Niet sa vôbec čomu čudovať, pretože IE6 je veľmi starý prehliadač, ktorý je zastaralý, nebezpečný, plných chýb a nepodporuje webové štandardy. Skôr ma prekvapuje, že k takémuto kroku sa Google odvážil až teraz a v podstate ho k tomu prinútili nepríjemné okolnosti (údajne nedávne útoky, ktoré boli smerované na služby Google, boli vykonávané práve z IE6 a využívali bezpečnostnú chybu v tomto prehliadači). Je len dobré, že takýto veľký a významný webový hráč sa rozhodol pre ukončenie podpory, a podnietil ostatné firmy a dokonca aj vlády významných štátov uvažovať o podobnom kroku.</p>
<h2>www.ie6nomore.com</h2>
<p>Na podporu tejto myšlienky bola spustená aj webová prezentácia <a href="www.ie6nomore.com">www.ie6nomore.com</a>, ktorej názov jasne hovorí o jej zameraní. Jej hlavným cieľom je podporiť ukončenie používania IE6. Na stránke nájdete niekoľko málo informácií, prečo by sa IE6 nemal vôbec používať, môžete na nej nájsť aj zoznam firiem, ktoré sa pridali k tejto iniciatíve.</p>
<h2>IMS blog a podpora IE6</h2>
<p>Na tomto blogu som sa rozhodol nepodporovať IE6 spolu so spustením novej témy. Bližšie podrobností nájdete <a href="/2009/11/09/redizajn-ims-blogu/">v zápisku o novej téme</a>. O správnosti tohto rozhodnutia svedčia aj štatistiky, kde len veľmi malé percento návštevníkov používa samotný prehliadač Internet Explorer a ešte menej jeho zastaralú verziu IE6.</p>
<p><a href="http://ims.rockretail.com/wp-content/uploads/2010/02/visitors-browser.png"><img class="alignnone size-medium wp-image-209" title="visitors-browser" src="http://ims.rockretail.com/wp-content/uploads/2010/02/visitors-browser-300x101.png" alt="visitors-browser" width="300" height="101" /></a></p>
<h2>Pridajte sa aj vy</h2>
<p>Na stránke www.ie6nomore.com môžete nájsť niekoľko možností, ako sa môžete zapojiť do tejto iniciatívy. Prvý krok predstavuje <a href="http://www.ie6nomore.com/code-samples.html">vloženie kódu ie6nomore</a> na vašu stránku.  Následne ak ste právnícka osoba, môžete poslať email priamo na adresu david+ie6nm@weebly.com s logom vašej firmy a neskôr sa vaše logo objaví v zozname týchto firiem.</p>
<p>Myslím si, že takmer každý webový vývojár sa stretol s množstvom problémov, ktoré musel riešiť len kvôli spätnej podpore IE6. Ja osobne pri externých projektoch pre svojich zákazníkov stále podporujem IE6, ale je to len z dôvodu, že mnohí z nich stále tento prehliadač používajú, aj napriek mojim upozorneniam, a v mnohých prípadoch ju aj vyžadujú. Musím však s ťažkým povzdychom dodať, že táto podpora je čoraz náročnejšia a v mnohých prípadoch je funkcionalita pre IE6 značne obmedzená.</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>Čo si vy myslíte o tejto iniciatíve?</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2010/02/03/www-ie6nomore-com-ako-ukoncit-pouzivanie-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zmeny vo vývojárskom tíme CakePHP</title>
		<link>http://ims.rockretail.com/2009/10/29/zmeny-vo-vyvojarskom-time-cakephp/</link>
		<comments>http://ims.rockretail.com/2009/10/29/zmeny-vo-vyvojarskom-time-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>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[V uplynulých dňoch došlo k zásadným zmenám vo vývojárskom tíme CakePHP.
Ako informuje článok The cake is still rising, vývojársky tém opustili manažér projektu Garrett Woodworth a vývojár Nate Abele. Server Root.cz priniesol informácie, že obidvaja pracujú na MVC frameworku pre PHP 5.3 a v blízkej budúcnosti by ho mali vydať pod názvom Lithium. Myslím si, [...]]]></description>
			<content:encoded><![CDATA[<p>V uplynulých dňoch došlo k zásadným zmenám vo vývojárskom tíme CakePHP.<span id="more-71"></span></p>
<p>Ako informuje článok <a href="http://bakery.cakephp.org/articles/view/the-cake-is-still-rising">The cake is still rising</a>, vývojársky tém opustili manažér projektu Garrett Woodworth a vývojár Nate Abele. Server <a href="http://www.root.cz/zpravicky/manazer-projektu-cakephp-odchazi-z-cake-software-foundation/">Root.cz</a> priniesol informácie, že obidvaja pracujú na MVC frameworku pre PHP 5.3 a v blízkej budúcnosti by ho mali vydať pod názvom Lithium. Myslím si, že v mene celej komunity okolo CakePHP im patrí veľké poďakovanie za skvele odvedenú prácu.</p>
<p>V pôvodnom článku sa taktiež spomínajú významné pokroky vo vývoji CakePHP 1.3, ktorý vedie Mark Story a taktiež sa môžeme dozvedieť <a href="http://code.cakephp.org/cakephp2/wiki">niekoľko noviniek</a>, ktoré sa chystajú pre CakePHP 2.0. Vývoj CakePHP 2.0 je pod taktovkou Graham Weldon.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2009/10/29/zmeny-vo-vyvojarskom-time-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nová verzia CakePHP 1.2.4.8284</title>
		<link>http://ims.rockretail.com/2009/08/04/nova-verzia-cakephp-1-2-4-8284/</link>
		<comments>http://ims.rockretail.com/2009/08/04/nova-verzia-cakephp-1-2-4-8284/#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>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bola vydaná nová verzia CakePHP s označením 1.2.4.8284 a zároveň s touto verziou bola sprístupnená aj vývojárska verzia CakePHP 1.3.
Pri verzii 1.2.4.8284 sa jedná o opravné vydanie, ktoré zahŕňa viac než 70 opráv. Kompletný zoznam zmien môžete nájsť v changelogu
Spolu s touto verziou bola vydaná aj vývojárksa verzia CakePHP 1.3. Medzi hlavné novinky tejto verzie [...]]]></description>
			<content:encoded><![CDATA[<p>Bola vydaná nová verzia CakePHP s označením 1.2.4.8284 a zároveň s touto verziou bola sprístupnená aj vývojárska verzia CakePHP 1.3.<span id="more-70"></span></p>
<p>Pri verzii 1.2.4.8284 sa jedná o opravné vydanie, ktoré zahŕňa viac než 70 opráv. Kompletný zoznam zmien môžete nájsť <a href="https://trac.cakephp.org/wiki/changelog/1.2.x.x/8284">v changelogu</a></p>
<p>Spolu s touto verziou bola vydaná aj vývojárksa verzia CakePHP 1.3. Medzi hlavné novinky tejto verzie patria</p>
<ul>
<li>kompatibilita s PHP 5.3</li>
<li>nový Javascript helper, ktorý podporuje používanie viacerých js knižníc</li>
<li>vylepšené generovanie kódu s podporou plugins a templates</li>
</ul>
<p>Ďalšou dôležitou zmenou je prechod celého projektu na verzovací systém <a href="http://git-scm.com/">Git</a>. Všetky zdrojové kódy môžete nájsť na adrese <a href="http://code.cakephp.org">http://code.cakephp.org</a> Nájdené chyby môžete odteraz nahlásiť na adrese <a href="http://code.cakephp.org/tickets">http://code.cakephp.org/tickets</a> namiesto <a href="http://trac.cakephp.org">http://trac.cakephp.org</a> ktorá sa používala v minulosti. V súvislosti s novým verzovacím systémom Git ešte spomeniem, že na adrese <a href="http://code.cakephp.org/source/branches">http://code.cakephp.org/source/branches</a> môžete nájsť niekoľko vetví CakePHP. Vetva <a href="http://code.cakephp.org/source/branches/1.2">CakePHP 1.2</a> je určená pre opravy aktuálneho vydania a vetva <a href="http://code.cakephp.org/source/branches/1.3">CakePHP 1.3</a> predstavuje nastávajúcu verziu.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2009/08/04/nova-verzia-cakephp-1-2-4-8284/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Access Control List v CakePHP &#8211; 1. časť</title>
		<link>http://ims.rockretail.com/2009/05/27/access-control-list-v-cakephp-1-cast/</link>
		<comments>http://ims.rockretail.com/2009/05/27/access-control-list-v-cakephp-1-cast/#comments</comments>
		<pubDate>Wed, 27 May 2009 12:58:03 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>
		<category><![CDATA[access control list]]></category>
		<category><![CDATA[acl]]></category>
		<category><![CDATA[autorizácia]]></category>
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Jednou z najdôležitejších a zároveň jednou z najproblema­tickejších častí CakePHP je Access Control List. Tento miniseriál má za cieľ priniesť viac svetla do problematiky ACL.
Čo je Access Control List
Access Control List (ďalej len ACL) predstavuje spôsob, akým môžeme riadiť oprávnenia v rámci našej aplikácie jednoduchým a udržovateľným spôsobom. Nato, aby sme mohli požadovaného chovania dosiahnuť, [...]]]></description>
			<content:encoded><![CDATA[<p>Jednou z najdôležitejších a zároveň jednou z najproblema­tickejších častí CakePHP je Access Control List. Tento miniseriál má za cieľ priniesť viac svetla do problematiky ACL.<span id="more-63"></span></p>
<h2>Čo je Access Control List</h2>
<p>Access Control List (ďalej len ACL) predstavuje spôsob, akým môžeme riadiť oprávnenia v rámci našej aplikácie jednoduchým a udržovateľným spôsobom. Nato, aby sme mohli požadovaného chovania dosiahnuť, potrebujeme dva hlavné prvky: prvým prvkom je objekt, ktorý žiada niečo, a druhým prvkom je objekt, ktorý je žiadaný. CakePHP používa pre tieto dva hlavné prvky názvy ARO (Access Control Object) a ACO (Access Request Object). ARO potom reprezentuje objekt, ktorý niečo žiada (väčšinou sa jedná o normálneho užívateľa aplikácie) a ACO predstavuje objekt, ktorý je žiadaný (napr. akcia controllera alebo webová služba). Vyššie napísané môžeme teda zhrnúť do vety: ACL je mechanizmus, ktorý rozhoduje o prístupe ARO k ACO, resp. rozhoduje o prístupe užívateľov alebo častí systému k dátam alebo iným častiam systému. Zároveň si však treba uvedomiť, že v prípae ACL sa nejedná o autentifikáciu, jedná sa o proces autorizácie, ktorý sa uskutočňuje až po vykonaní autentifikácie.</p>
<h2>Ako ACL funguje</h2>
<p>Aby sme si celý mechanizmus dokázali predstaviť, vytvoríme si jednoduchý reálny príklad. Predstavme si, že v našej aplikácii sa vyskytuje niekoľko typov užívateľov (ďalej len ARO): administrátor, redaktor a návštevník. Taktiež má náš systém svoje vlastnosti, ku ktorým budú pristupovať ARO. Náš systém je jednoduchý a obsahuje následujúce vlastnosti (ďalej len ACO): zobrazenie článku, pridanie článku a pridanie komentára. Jednotlivé ARO by sme mohli prehľadne zapísať následovne</p>
<ul class="acl">
<li>užívatelia
<ul>
<li>administrátor
<ul>
<li>Admin 1</li>
</ul>
</li>
</ul>
<ul>
<li>redaktor
<ul>
<li>Redaktor 1</li>
</ul>
</li>
</ul>
<ul>
<li>návštevník
<ul>
<li>User 1</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>CakePHP používa pre uloženie ARO stromovú štruktúru, ktorá umožňuje (napr. oproti tabuľke) zoskupiť užívateľov do jednotlivých skupín a riadiť tak prístup na úrovni týchto skupín, čo predstavuje väčšiu flexibilitu.</p>
<p>Zoznam ARO máme hotový, ešte musíme k nim priradiť jednotlivé ACO a tým vytvoríme kompletný ACL, ktorý bude riadiť prístup k našej aplikácii. Kompletný ACL bude vypadať následovne</p>
<ul class="acl">
<li>užívatelia<br />
	<strong>Deny:</strong> all</p>
<ul>
<li>administrátor<br />
			<strong>Allow:</strong> zobrazenie článku, pridanie článku, pridanie komentára</p>
<ul>
<li>Admin 1</li>
</ul>
</li>
</ul>
<ul>
<li>redaktor<br />
			<strong>Allow:</strong> zobrazenie článku, pridanie článku</p>
<ul>
<li>Redaktor 1</li>
</ul>
</li>
</ul>
<ul>
<li>návštevník<br />
			<strong>Allow:</strong> zobrazenie článku, pridanie komentára</p>
<ul>
<li>User 1</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Ako môžeme vidieť, stromová štruktúra nám poskytuje vysokú flexibilitu. Ako užívateľ (bez bližšieho určenia či sa jedná o administrátora, redaktora alebo návštevníka) nemáme žiadne oprávnenie v našej aplikácii. Avšak ako redaktor môžeme zobrazovať a pridávať články, na druhej strane ako návštevník môžeme články len zobrazovať. Ako administrátor máme prístup ku všetkým vlastnostiam aplikácie. Vďaka spomínanej flexibilite stromovej štruktúry je veľmi jednoduché pridávať a odoberať skupiny alebo meniť oprávnenia pre jednotlivých užívateľov a skupiny.</p>
<p>Následne môžeme pomocou ACL zisťovať oprávnenia pre jednotlivé skupiny alebo jednotlivých užívateľov. Predstavme si situáciu, v ktorej by sme chceli zistiť, či redaktor <em>Redaktor 1</em> má oprávnenie pridať článok. Najprv zistíme cestu stromom pre uzol <em>Redaktor 1</em>, cesta je nasledovná <em>užívatelia → redaktor → Redaktor 1</em>. Následne môžeme získať jeho oprávnenia, ktoré môžeme zobraziť pomocou tabuľky následovne</p>
<table style="border:1px solid black">
<thead>
<tr>
<th style="width:150px">ARO uzol</th>
<th style="width:200px">Oprávnenia</th>
<th style="width:250px">Výsledok</th>
</tr>
</thead>
<tbody>
<tr>
<td>užívatelia</td>
<td>Deny all</td>
<td>nemá oprávnenie k pridaniu článku</td>
</tr>
<tr>
<td>redaktor</td>
<td>Allow „pridanie článku“</td>
<td>prístup povolený</td>
</tr>
<tr>
<td>Redaktor 1</td>
<td>Allow „pridanie článku“</td>
<td>prístup povolený</td>
</tr>
</tbody>
</table>
<p>Predchádzajúce časti boli teoretické a mali za cieľ podrobne vysvetliť fungovanie ACL. Teraz si poďme ukázať, ako inicializovať ACL v CakePHP.</p>
<h2>ACL v CakePHP</h2>
<p>Inicializácia ACL spočíva vo vytvorení databázových tabuliek, ktoré sú potrebné pre správne fungovanie. Defaultne je ACL v CakePHP založený na databáze (možnosťou je taktiež používať ACL bez databázy, ale v našom článku budeme používať ACL v spolupráci s databázou). Pri vytváraní tabuliek máme dve možnosti, použitie konzoly cakephp alebo import sql priamo do databázy. Pre tých, ktorí sú zoznámení s cakephp konzolou, stačí spustiť pomocou konzoly príkaz</p>
<pre><code>cake schema run create DbAcl</code></pre>
<p>Výpis konzoly by mal vypadať následovne</p>
<pre><code>---------------------------------------------------------------
Cake Schema Shell
---------------------------------------------------------------

The following tables will be dropped.
acos
aros
aros_acos

Are you sure you want to drop the tables? (y/n)
[n] &gt; y
Dropping tables.
acos updated.
aros updated.
aros_acos updated.

The following tables will be created.
acos
aros
aros_acos

Are you sure you want to create the tables? (y/n)
[y] &gt; y
Creating tables.
acos updated.
aros updated.
aros_acos updated.
End create.</code></pre>
<p>Pre tých, ktorí s konzolou zatiaľ nepracovali, stačí importovať sql súbor uložený v <em>app/config/sq/db_a­cl.sql</em> do vašej databázy. Následne sa nám v databáze vytvoria tri tabuľky</p>
<p><em>acos – zoznam ACO</em></p>
<p><em>aros – zoznam ARO</em></p>
<p><em>aros_acos – zoznam oprávnení ARO k ACO</em></p>
<p>Po úvodnej inicializácii máme všetko pripravené pre začatie používania ACL v CakePHP. V následujúcich častiach seriálu sa pustíme do samotnej implementácie. Vytvoríme si kompletnú aplikáciu používajúcu ACL a taktiež si ukážeme, ako automaticky naplniť tabuľku ACOs podľa existujúcich controllerov v našej aplikácii.</p>
<p>Rád uvítam vaše nápady, pripomienky a skúsenosti s ACL v diskusii k článku.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2009/05/27/access-control-list-v-cakephp-1-cast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>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>
		<item>
		<title>Seriál o CakePHP na abclinuxu.cz</title>
		<link>http://ims.rockretail.com/2008/03/21/serial-o-cakephp-na-abclinuxu-cz/</link>
		<comments>http://ims.rockretail.com/2008/03/21/serial-o-cakephp-na-abclinuxu-cz/#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>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dnes mi vyšiel na známom serveri www.abclinuxu.cz prvý zo série článkov o frameworku CakePHP.
Zatiaľ sa jedná o sériu 4 častí o CakePHP, ktoré boli uverejnené na tomto blogu. Po uverejnení týchto častí budú články z tejto série vychádzať na blogu a na www.abclinuxu.cz paralelne.
Kto by mal záujem, môžete článok o CakePHP podporiť priamo na Abclinuxu.cz [...]]]></description>
			<content:encoded><![CDATA[<p>Dnes mi vyšiel na známom serveri <a href="http://www.abclinuxu.cz">www.abclinuxu.cz</a> prvý zo série článkov o frameworku CakePHP.<span id="more-32"></span></p>
<p>Zatiaľ sa jedná o sériu <a href="http://ims.rockretail.com/categories/view/zaciname-s-cakephp">4 častí o CakePHP</a>, ktoré boli uverejnené na tomto blogu. Po uverejnení týchto častí budú články z tejto série vychádzať na blogu a na <a href="http://www.abclinuxu.cz">www.abclinuxu.cz</a> paralelne.</p>
<p>Kto by mal záujem, môžete článok o CakePHP podporiť priamo na <a href="http://www.abclinuxu.cz/clanky/programovani/cakephp-tvorime-cms-1-uvod">Abclinuxu.cz CakePHP: tvoríme CMS – 1 (úvod)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2008/03/21/serial-o-cakephp-na-abclinuxu-cz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vlastné portfólio</title>
		<link>http://ims.rockretail.com/2007/10/25/vlastne-portfolio/</link>
		<comments>http://ims.rockretail.com/2007/10/25/vlastne-portfolio/#comments</comments>
		<pubDate>Tue, 30 Nov 1999 00:00:00 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Články]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Včera som sa konečne dostal k inovovaniu web stránky so svojím vlastným portfóliom mojej tvorby.
Na stránke môžete nájsť projekty, ktoré som doposiaľ vytvoril. V budúcnosti plánujem spustiť aj popis ku každému projektu.
Niektoré projekty sú už poriadne staré a určite nespĺňajú súčasné požiadavky na moderné web stránky, ako sú dodržiavanie štandardov, prístupnosť atď. Ale na druhej [...]]]></description>
			<content:encoded><![CDATA[<p>Včera som sa konečne dostal k inovovaniu web stránky so svojím vlastným portfóliom mojej tvorby.<span id="more-13"></span></p>
<p>Na stránke môžete nájsť projekty, ktoré som doposiaľ vytvoril. V budúcnosti plánujem spustiť aj popis ku každému projektu.</p>
<p>Niektoré projekty sú už poriadne staré a určite nespĺňajú súčasné požiadavky na moderné web stránky, ako sú dodržiavanie štandardov, prístupnosť atď. Ale na druhej strane si myslím, že do môjho portfólia patria.</p>
<p>Moje portfólio môžete nájsť na adrese <a href="http://blueweb.rockretail.com">blueweb.rockre­tail.com</a></p>
<p>Užite si to <img src='http://ims.rockretail.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2007/10/25/vlastne-portfolio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP 1.2 pre-beta</title>
		<link>http://ims.rockretail.com/2007/10/23/cakephp-1-2-pre-beta/</link>
		<comments>http://ims.rockretail.com/2007/10/23/cakephp-1-2-pre-beta/#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>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Včera 22. októbra bola vydaná ďalšia vývojová verzia CakePHP na ceste k stabilnej verzii 1.2.
Zmien je mnoho a určite bude so mnou každý súhlasiť, keď napíšem, že z CakePHP sa skutočne stáva jeden z najlepších frameworkov pre PHP vôbec.
Prečítať si môžete oznámenie k vydaniu novej verzie a zoznam zmien
Sťahovať môžete zo stránok cakeforge.org
Upozorniť by som [...]]]></description>
			<content:encoded><![CDATA[<p>Včera 22. októbra bola vydaná ďalšia vývojová verzia CakePHP na ceste k stabilnej verzii 1.2.<span id="more-12"></span></p>
<p>Zmien je mnoho a určite bude so mnou každý súhlasiť, keď napíšem, že z CakePHP sa skutočne stáva jeden z najlepších frameworkov pre PHP vôbec.</p>
<p>Prečítať si môžete <a href="http://bakery.cakephp.org/articles/view/new-cakephp-releases">oznámenie k vydaniu novej verzie</a> a <a href="https://trac.cakephp.org/wiki/changelog/1.2.x.x">zoznam zmien</a></p>
<p><a href="http://cakeforge.org/frs/?group_id=23&amp;release_id=344">Sťahovať môžete zo stránok cakeforge.org</a></p>
<p>Upozorniť by som chcel ešte na jednu stránku, ktorá vznikla s vydaním tejto verzie (alebo som len teraz na ňu narazil <img src='http://ims.rockretail.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) a to je to stránka <a href="http://tempdocs.cakephp.org/">tempdocs.cakep­hp.org/</a> na ktorej môžete nájsť už teraz množstvo cenných informácií o CakePHP. Stránka nie je ešte kompletná a naďalej budú pribúdať ďalšie informácie.</p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2007/10/23/cakephp-1-2-pre-beta/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
