<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Alvanweb</title>
	
	<link>http://weblog.alvanweb.com</link>
	<description>یادداشت های مرتضی الوانی</description>
	<pubDate>Thu, 23 Oct 2008 20:42:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/alvanweb" type="application/rss+xml" /><feedburner:emailServiceId>483518</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
		<title>ساخت لینکدونی با CakePHP (بخش سوم)</title>
		<link>http://feeds.feedburner.com/~r/alvanweb/~3/430010900/</link>
		<comments>http://weblog.alvanweb.com/2008/10/24/create-linkdump-with-cakephp-part-3/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 20:40:09 +0000</pubDate>
		<dc:creator>مرتضی الوانی</dc:creator>
		
		<category><![CDATA[پی اچ پی]]></category>

		<guid isPermaLink="false">http://weblog.alvanweb.com/?p=157</guid>
		<description><![CDATA[پیش نیازها: ساخت لینکدونی با CakePHP (بخش اول) و (بخش دوم)
در مراحل قبل داده‌ها را از دیتابیس خواندیم و در قالب لینک نمایش دادیم. در این بخش قصد داریم امکان افزودن لینک جدید، ویرایش و حذف لینک را اضافه کنیم و مختصری هم با Routes در کیک پی‌اچ‌پی آشنا شویم. 
ساخت فرم و افزودن لینک
طبق [...]]]></description>
			<content:encoded><![CDATA[<p><strong>پیش نیازها:</strong> ساخت لینکدونی با CakePHP (<a href="http://weblog.alvanweb.com/2008/10/22/create-linkdump-with-cakephp-part-1/">بخش اول</a>) و (<a href="http://weblog.alvanweb.com/2008/10/23/create-linkdump-with-cakephp-part-2/">بخش دوم</a>)<br />
در مراحل قبل داده‌ها را از دیتابیس خواندیم و در قالب لینک نمایش دادیم. در این بخش قصد داریم امکان افزودن لینک جدید، ویرایش و حذف لینک را اضافه کنیم و مختصری هم با Routes در کیک پی‌اچ‌پی آشنا شویم. </p>
<div class="post_caption">ساخت فرم و افزودن لینک</div>
<p>طبق نمونه‌های گذشته به فایل links_controller.php کنش add  را بصورت زیر اضافه می‌کنیم تا بتوانیم لینک‌های جدیدی در دیتابیس اضافه کنیم:</p>
<div class="syntax_hilite">
<div id="php-13">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> LinksController extends AppController <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Links'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">function</span> index<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'links'</span>, <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'all'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; &nbsp; &nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">function</span> view<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$id</span> = <span style="color:#000000; font-weight:bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">id</span> = <span style="color:#0000FF;">$id</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'link'</span>, <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">read</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">function</span> add<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>!<a href="http://www.php.net/empty"><span style="color:#000066;">empty</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">data</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">save</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">data</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">flash</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Your link has been saved.'</span>, <span style="color:#FF0000;">'/links'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>تابع add را به این صورت تعریف می‌کنیم که چنانچه فرم ارسال شده خالی نبود، با استفاده از مدل Link سعی شود داده ذخیره شود اما چنانچه بنا به دلایلی ذخیره نشد، نما نمایش داده شود. این خود فرصتی را در اختیارمان قرار می‌دهد تا خطاهای ناشی از محتوای فیلدهای ارسالی را نمایش دهیم. <span id="more-157"></span></p>
<p>هنگامی کاربر به روش POST داده‌ها را به برنامه ارسال می‌کند، این اطلاعات در <span dir="ltr">$this->data</span> وجود دارند با استفاده از تابع pr‌ می‌توانید آن‌ها را چاپ کنید. تابع <span dir="ltr">$this->flash()</span> یک متد کنترلر است که برای چند ثانیه پیامی را به کاربر نشان می‌دهد. سپس کاربر را به صفحه‌ای که به عنوان پارامتر دوم دریافت می‌کند هدایت می‌کند. (در اینجا کاربر به صفحه‌ی links هدایت می‌شود)</p>
<p>در اینجا لازم است در مورد اشکال زدایی توکار فریم‌ورک (Debug) توضیح بدهم. کیک برای اشکال زدایی دو حالت تولید (Production) و توسعه (Development) دارد. حالت تولید مربوط به زمانی است که پروژه تان با کیک اتمام یافته و قصد دارید آن را ارائه کنید. حالت توسعه هم گویای زمان توسعه پروژه است. این حالت‌ها در فایل  app\config\core.php با مقداردهی عددی از 0 تا 3 برای debug  قابل تنظیم است. </p>
<p>مقدار 0 مربوط به حالت تولید می‌شود، در این حالت هیچ خطا و هشداری مشاهده نمی‌شود و تابع Flash که در بالا معرفی شد بصورت redirect عمل میکند (بطور خودکار کاربر به صفحه دیگر منتقل می‌شود) در حالتی که این مقدار بزرگتراز صفر تنظیم شود فریم‌ورک در حالت توسعه است و تابع  Flash بطور خودکار عمل انتقال کاربر به صفحه جدید را انجام نمی‌دهد (بطور پیشفرض مقدار روی 2 تنظیم شده است)</p>
<p>متد save خطاها را بررسی خواهد کرد و چنانچه خطایی رخ دهد عمل ذخیره انجام نخواهد شد. در قسمت بعد توضیح خواهم داد که چگونه این خطاها را کنترل کنید.</p>
<div class="post_caption">معتبرسازی داده</div>
<p>هر برنامه‌نویس تحت وبی رویکردی برای بررسی صحت اطلاعات وارد شده در فیلدهای فرم‌ها دارد و تقریبا معتبرسازی اطلاعات وارد شده و هدایت کاربر به پرکردن صحیح فرم‌ها کار وقت گیری است. کیک در این مورد بی‌اندازه متنوع و انعطاف‌پذیر است.</p>
<p>برای بهره‌گیری از قابلیت‌های معتبرسازی فرم‌ها کافیست از FormHelper کیک استفاده کنید. FormHelper  بطور پیشفرض در همه نماها که در آن عملگر <span dir="ltr">$form</span>  بکار رود موجود است. نمای add را بصورت زیر ایجاد می‌کنیم:</p>
<div class="syntax_hilite">
<div id="php-14">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">/app/views/links/add.ctp</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;h1&gt;Add Link&lt;/h1&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'url'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'body'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'rows'</span> =&gt; <span style="color:#FF0000;">'3'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">end</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Save Link'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>در اینجا از <span dir="ltr">$form->create()</span>  بمنظور ایجاد تگ باز form استفاده کردیم این کد خروجی زیر را تولید می‌کند:</p>
<div class="syntax_hilite">
<div id="html-15">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">&lt;form</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"LinkAddForm"</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">"post"</span> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">"/cake/links/add"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span> </div>
</li>
</ol>
</div>
</div>
</div>
</form>
<p>اگر تابع create  هیچ پارامتری نداشته باشد، بطور پیشفرض کیک action و method را مقدار‌دهی می‌کند. از <span dir="ltr">$form->input()</span> هم برای ایجاد عناصر فرم با همان نامی که به عنوان پارامتر می‌گیرد استفاده می‌شود. کیک توسط اولین پارامتر تشخیص می‌دهد که فیلد از چه نوعی است و دومین پارامتر این امکان را فراهم می کند که آرایه وسیعی با اختیارات فراوان تعیین کنیم. در اینجا تعداد سطرهای textarea لحاظ شده است. <span dir="ltr">input()</span> عناصر فرمی متفاوتی را، مبنی بر مدل فیلد مشخص شده، ایجاد می‌کند و این یکی از شگردهای کیک است.<br />
با فراخوانی <span dir="ltr">$form->end()</span> یک کلید ارسال ایجاد، و تگ form بسته می‌شود. رشته‌ای که به عنوان اولین پارامتر <span dir="ltr">end()</span> قرار می‌گیرد، برابر مقدار (value) کلید ارسال خواهد بود.</p>
<p>حال اجازه بدهید به صفحه اصلی لینکدونی برگردیم و در فایل app/views/links/index.ctp لینک  صفحه جدیدی را که بمنظور افزودن داده به دیتابیس ساختیم، قبل از جدول اضافه کنیم:</p>
<div class="syntax_hilite">
<div id="php-16">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Add Link'</span>,<span style="color:#FF0000;">'/links/add'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>ممکنه تعجب کنید که چطور کیک صحت اعتبار این فیلدها را بررسی می‌کند. قاعده‌های معتبر‌سازی در مدل تعریف می‌شوند. بدین منظور مجدداً به مدل Link بر می‌گردیم و اصلاحاتی را به شکل زیر لحاظ می‌کنیم:</p>
<div class="syntax_hilite">
<div id="php-17">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> <a href="http://www.php.net/link"><span style="color:#000066;">Link</span></a> extends AppModel <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Link'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$validate</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'title'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'rule'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'minLength'</span>, <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'url'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'rule'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'minLength'</span>, <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>,&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'body'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#FF0000;">'rule'</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'minLength'</span>, <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>آرایه <span dir="ltr">$validate</span> به کیک می‌گوید که هنگامی که متد <span dir="ltr">save()</span> فراخوانی شد چگونه صحت اطلاعات بررسی شود. در اینجا سه فیلد عنوان، آدرس و توضیحات را چک می‌کنیم که نبایستی خالی باشد. یکبار دیگر تکرار می‌کنم موتور معتبرسازی کیک بسیار قوی است چرا که شمار زیادی از قواعد پیش‌ساخته شده (بررسی صحت آدرس ایمیل، شماره کارت اعتباری، تلفن و ...) در آن گنجانده شده است و سفارشی سازی آنها انعطاف پذیری فوق العاده‌ای دارد. برای اطلاعات بیشر می توانید به <a href="http://book.cakephp.org/view/125/data-validation">اینجا</a> رجوع کنید.</p>
<p>هم‌اکنون قواعد معتبرسازی لحاظ شده‌اند. فرم افزودن لینک را با فیلدهای خالی تست کنید تا ببینید چگونه کار می‌کند. هنگامی که از <span dir="ltr">input()</span> برای ایجاد عناصر فرم استفاده می‌کنیم، خطاهای مربوط به عدم صحت داده بطور خودکار نمایش داده می‌شوند.</p>
<div class="post_caption">حذف کردن لینک</div>
<p>قصد داریم امکانی را ایجاد کنیم که کاربران بتوانند لینک‌ها را از دیتابیس پاک کنند. خوب! با کنش <span dir="ltr">delete()</span>  در LinksControlle  به شکل زیر شروع می کنیم:</p>
<div class="syntax_hilite">
<div id="php-18">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> delete<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$id</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">del</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$id</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">flash</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'The link with id: '</span>.<span style="color:#0000FF;">$id</span>.<span style="color:#FF0000;">' has been deleted.'</span>, <span style="color:#FF0000;">'/links'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>این تابع با گرفتن <span dir="ltr">$id</span> هر لینک، آن را از دیتابیس پاک می‌کند و با استفاده از <span dir="ltr">flash()</span> پیام تاییدی را مبنی بر حذف لینک قبل از ری‌دایرکت (انتقال خودکار) شدن به صفحه‌ی <span dir="ltr">/links</span> به کاربر نشان می‌دهد. با این وجود یکبار دیگر باید فایل index.ctp را بصورت زیر ویرایش کنیم و قابلیت حذف هر لینک را به آن بیفزاییم:</p>
<div class="syntax_hilite">
<div id="php-19">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;h1&gt;Links:&lt;/h1&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;p&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Add Link'</span>,<span style="color:#FF0000;">'/links/add'</span><span style="color:#006600; font-weight:bold;">&#41;</span>?&gt;&lt;/p&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;table&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;th&gt;Id&lt;/th&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;th&gt;Title&lt;/th&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;th&gt;Actions&lt;/th&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;th&gt;Created&lt;/th&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> <span style="color:#616100;">foreach</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$links</span> <span style="color:#616100;">as</span> <span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;td&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'id'</span><span style="color:#006600; font-weight:bold;">&#93;</span>; ?&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;td&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">"/links/view/"</span>.<span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'id'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; ?&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;td&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Delete'</span>, <span style="color:#FF0000;">"/links/delete/{$link['Link']['id']}"</span>, <span style="color:#000000; font-weight:bold;">null</span>, <span style="color:#FF0000;">'Are you sure?'</span> <span style="color:#006600; font-weight:bold;">&#41;</span>?&gt;&lt;/td&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;td&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'created'</span><span style="color:#006600; font-weight:bold;">&#93;</span>; ?&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> endforeach; <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/table&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p>کد بالا از قابلیت توکار HtmlHelper  بمنظور ایجاد یک دیالوگ جاوااسکریپتی تایید حذف لینک، قبل از اینکه کاربر لینک را حذف کند، استفاده می کند. می‌بینید این فریم‌ورک تا چه اندازه همه چیز را ساده کرده است!</p>
<div class="post_caption">ویرایش لینک </div>
<p>اگر مراحل قبل را فراگرفته باشید از الان شما یک حرفه‌‌ای کیک پی‌اچ‌پی هستید! پس می‌بایستی الگوی ادامه کار را حدس بزنید. یک کنش می‌سازیم و سپس نما را اضافه می‌کنیم. در زیر کنش <span dir="ltr">edit()</span> را که باید در LinksControlle لحاظ شود می‌بینید:</p>
<div class="syntax_hilite">
<div id="php-20">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> edit<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$id</span> = <span style="color:#000000; font-weight:bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">id</span> = <span style="color:#0000FF;">$id</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/empty"><span style="color:#000066;">empty</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">data</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">data</span> = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">read</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">save</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">data</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">flash</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Your link has been updated.'</span>,<span style="color:#FF0000;">'/links'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>این تابع ابتدا داده ارسالی فرم را  بررسی می‌کند ، اگر هیچ چیزی فرستاده نشده باشد لینک‌ها را به نما منتقل می‌کند. اگر داده‌ای در نتیجه تغییر، ارسال شده باشد سعی می‌کند از طریق مدل Link داده‌ جدید را در دیتابیس ذخیره کند (یا خطاهای ناشی از عدم اعتبار داده را نشان خواهد داد) نمای edit بصورت زیر است:</p>
<div class="syntax_hilite">
<div id="php-21">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">/app/views/links/edit.ctp</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;h1&gt;Edit Link&lt;/h1&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Link'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'action'</span> =&gt; <span style="color:#FF0000;">'edit'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'url'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'body'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'rows'</span> =&gt; <span style="color:#FF0000;">'3'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">input</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'id'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'type'</span>=&gt;<span style="color:#FF0000;">'hidden'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$form</span>-&gt;<span style="color:#006600;">end</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Save Link'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>خروجی کد بالا فرمی خواهد بود که درفیلدهای آن اطلاعات لینکی که درخواست ویرایش آن داده شده قرار دارد. باید در اینجا توجه کنید که id هر لینک بصورت یک عنصر مخفی (hidden) در فرم آمده است. در حقیقت هنگامی که id هر لینک با اطلاعات ارسال شده باشد کیک تشخیص می‌دهد که این لینک باید ویرایش شود در صورتی که اگر id با اطلاعات ارسالی نباشد هنگامی که تابع <span dir="ltr">save()</span> فراخوانی می‌شود یک لینک جدید اضافه خواهد شد.</p>
<p>مجدداً به نمای index برمی‌گردیم و قابلیت ویرایش هر لینک را به صورت زیر در کنار پیوند مربوط به حذف لینک اضافه می‌کنیم (تا در صفحه‌ی اصلی قابلیت ویرایش لینک را داشته باشیم):</p>
<div class="syntax_hilite">
<div id="php-22">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Edit'</span>, <span style="color:#FF0000;">'/links/edit/'</span>.<span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'id'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;?&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p>تا اینجا آموختید که چگونه با  CakePHP یک لینکدونی ساده بسازید. قابلیت‌هایی نظیر افزودن، ویرایش و حذف لینک تنها به این دلیل بود که با نحوه ایجاد کنش در کنترلر آشنا شوید و بتوانید نماهای مربوطه را ایجاد کنید. به ادمه بحث در مورد Routes (مسیرها) می‌پردازیم.</p>
<div class="post_caption">مسیرها (Routes) در CakePHP</div>
<p>برای بعضی‌ها تنظیمات پیشفرض کیک در مورد مسیرها کافی است. اما توسعه دهندگان نسبت به کاربرپسند کردن URL‌ها و سازگاری با موتورهای جستجو حساس هستند. از اینرو می‌توانند از تنظیمات Routes استفاده کنند. در این آموزش تغییرات ناچیزی را در این مورد لحاظ می‌کنیم برای اطلاعات بیشتر و تکنیک‌های مسیر‌دهی پیشرفته، بخش <a href="http://book.cakephp.org/view/46/">Routes Configuration</a> در مستندات کیک را ببینید.</p>
<p>تا اینجا که لینکدونی را ایجاد کردیم چنانچه کاربری به صفحه‌ی اصلی (شاخه دایرکتوری اصلی) به نشانی example.com/cake مراجعه کند بطور پیشفرض PagesController فراخوانی می‌شود و نمایی بنام home رندر می‌شود. قصد داریم مسیر را طوری تعیین کنیم که با درخواست شاخه اصلی، لیست لینک‌ها نمایش داده شود. </p>
<p>مسیرها در فایل app/config/routes.php تعیین می‌شوند. خط زیر مسیر پیشفرض شاخه اصلی را تعیین می‌کند. آن را توسط کامنت (//) غیرفعال کنید یا این خط را پاک کنید:</p>
<div class="syntax_hilite">
<div id="php-23">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Router::<span style="color:#006600;">connect</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'/'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'controller'</span> =&gt; <span style="color:#FF0000;">'pages'</span>, <span style="color:#FF0000;">'action'</span> =&gt; <span style="color:#FF0000;">'display'</span>, <span style="color:#FF0000;">'home'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>خط فوق آدرس '/' را با صفحه پیشفرض کیک مرتبط می‌کند. ما می‌خواهیم آن را با کنترلر خودمان ارتباط دهیم بنابراین خط زیر را به این فایل اضافه می‌کنیم:</p>
<div class="syntax_hilite">
<div id="php-24">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Router::<span style="color:#006600;">connect</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'/'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'controller'</span> =&gt; <span style="color:#FF0000;">'links'</span>, <span style="color:#FF0000;">'action'</span> =&gt; <span style="color:#FF0000;">'index'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>حال با رفتن به صفحه اصلی کیک به نشانی example.com/cake بجای صفحه پیشفرض لیست لینک‌ها را می‌بینید. می‌توانید نام شاخه اصلی را که در بخش اول آموزش cake گذاشتید، به linkdump تغییر دهید (تا هخوانی بیشتری  با پروژه داشته باشد) بنابراین آدرس صفحه اصلی به example.com/linkdump تغییر خواهد کرد.</p>
<p>اگر نام شاخه را از cake به  linkdump تغییر دادید فایل‌های تمپ را پاک کنید تا صفحه اصلی را ببینید. تنها جهت آشنایی شما با خطاهای پیکربندی اولیه کیک، نام دایرکتوری را ابتدا cake انتخاب کردم چون می‌توانست از همان ابتدا linkdump انتخاب شود.</p>
<div class="post_caption">سخن آخر</div>
<p>نوشتن این لینکدونی در اینجا به پایان رسید. ساده نبود؟! یادتان باشد این آموزش پایه بود CakePHP خیلی خیلی قابلیت‌های بیشتری از آنچه گفته شد دارد و بیش از آنچه تصور کنید انعطاف‌پذیر است. متاسفم از اینکه باید بگویم فرصت کافی ندارم تا آنچه از کیک می‌دانم بزبان ساده بیان کنم.</p>
<p> از همین الان می‌توانید پروژه‌های آزمایشی را با کیک  شروع کنید. بزرگترین راهنما یعنی <a href="http://book.cakephp.org/">Manual</a> و <a href="http://api.cakephp.org/">API</a> کیک در اختیار شماست. اگر مشکلی داشتید در حد دانشم درخدمتم. موفق باشید. (مرتضی الوانی، آبانماه 1387)</p>
<div class="post_caption">دریافت فایل‌های ضمیمه</div>
<p><strong><a href="http://alvani.googlepages.com/cake_app_linkdump.zip">[+]</a></strong> دایرکتوری app این پروژه بهمراه فایل sql ساخت جدول<br />
<strong><a href="http://alvani.googlepages.com/create_linkdump_with_cakephp.zip">[+]</a></strong> آموزش کامل (بخش‌های اول و دوم و سوم) بصورت PDF</p>
<img src="http://feeds.feedburner.com/~r/alvanweb/~4/430010900" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.alvanweb.com/2008/10/24/create-linkdump-with-cakephp-part-3/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=alvanweb&amp;itemurl=http%3A%2F%2Fweblog.alvanweb.com%2F2008%2F10%2F24%2Fcreate-linkdump-with-cakephp-part-3%2F</feedburner:awareness><feedburner:origLink>http://weblog.alvanweb.com/2008/10/24/create-linkdump-with-cakephp-part-3/</feedburner:origLink></item>
		<item>
		<title>ساخت لینکدونی با CakePHP (بخش دوم)</title>
		<link>http://feeds.feedburner.com/~r/alvanweb/~3/428933927/</link>
		<comments>http://weblog.alvanweb.com/2008/10/23/create-linkdump-with-cakephp-part-2/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 20:43:33 +0000</pubDate>
		<dc:creator>مرتضی الوانی</dc:creator>
		
		<category><![CDATA[پی اچ پی]]></category>

		<guid isPermaLink="false">http://weblog.alvanweb.com/?p=156</guid>
		<description><![CDATA[پیش نیاز: ساخت لینکدونی با CakePHP (بخش اول)
در پست قبل تا ساخت پایگاه‌ داده و مقداردهی فایل database.php  بمنظور ارتباط با MySQL پیش رفتیم. حال یک جدول بنام links با شش فیلد زیر در دیتابیس linkdump که قبلاً ساخته‌ایم ایجاد می‌کنیم. همچنین جهت تست دو لینک اضافه می‌کنیم:





/* First, create our links table: */


CREATE [...]]]></description>
			<content:encoded><![CDATA[<p><strong>پیش نیاز:</strong> <a href="http://weblog.alvanweb.com/2008/10/22/create-linkdump-with-cakephp-part-1/">ساخت لینکدونی با CakePHP (بخش اول)</a><br />
در پست قبل تا ساخت پایگاه‌ داده و مقداردهی فایل database.php  بمنظور ارتباط با MySQL پیش رفتیم. حال یک جدول بنام links با شش فیلد زیر در دیتابیس linkdump که قبلاً ساخته‌ایم ایجاد می‌کنیم. همچنین جهت تست دو لینک اضافه می‌کنیم:</p>
<div class="syntax_hilite">
<div id="sql-33">
<div class="sql">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="">/* First, create our links table: */</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> links <span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">id INT <span style="color: #993333; font-weight: bold;">UNSIGNED</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">url VARCHAR<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">255</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">title VARCHAR<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">255</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">body TEXT,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">created DATETIME <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">modified DATETIME <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="">/* Then insert some links for testing: */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> links <span style="color:#006600; font-weight:bold;">&#40;</span>url, title, body, created<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #ff0000;">'http://alvanweb.com'</span>, <span style="color: #ff0000;">'Alvanweb'</span>, <span style="color: #ff0000;">'All about web design and progrmming'</span>, NOW<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #ff0000;">'http://cakephp.org'</span>, <span style="color: #ff0000;">'CakePHP'</span>, <span style="color: #ff0000;">'The rapid development php framework'</span>, NOW<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>نام‌ جدول و ستون‌ها اختیاری نیستند! اگر از قواعد نامگذاری جداول و کلاس‌های کیک پیروی کنید خواهید توانست از مزایای توابع توکار کیک بدون پیکر‌بندی براحتی استفاده کنید. کیک تا انجا انعطاف پذیر است که حتی با وجود عدم تطابق با طرح‌های پیشفرض می‌توانید آن را سفارشی کنید اما استفاده از قواعد در صرفه‌جویی زمان موثر است. </p>
<p>برای اطلاعات بیشتر در مورد این قواعد نامگذاری <a href="http://book.cakephp.org/view/22/">اینجا</a> را ببینید. اما همین اندازه کافی است که بدانید جدول links بطور خودکار به مدلی بنام link اشاره دارد و همچنین فیلدهای created و modified بطور منطقی و خودکار توسط کیک مدیریت می‌شوند. <span id="more-156"></span></p>
<div class="post_caption">ایجاد یک مدل</div>
<p>به سراغ کدنویسی کیک می‌رویم. اولین فایلی که باید ایجاد کنیم یک مدل برای لینک‌ها است. به زبان ساده بگویم مدل در واقع نان و کره‌ی یک برنامه نوشته شده با کیک است. با ایجاد یک مدل با دیتابیس ارتباط برقرار کرده‌ایم. در ابتدا پایه کد را می‌نویسیم سپس اعمالی نظیر نمایش، افزودن، ویرایش و حذف لینک را اضافه خواهیم کرد.</p>
<p>کلاسی که به عنوان مدل تعریف می‌شود در app/models  قرار می‌گیرد و محتویات فایلی که در app/models/link.php ذخیره خواهد شد بصورت زیر است:</p>
<div class="syntax_hilite">
<div id="php-34">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> <a href="http://www.php.net/link"><span style="color:#000066;">Link</span></a> extends AppModel <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Link'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>یادتان نرود قواعد نامگذاری در کیک بسیار مهم است. با نامیدن مدل بنام Link کیک بطور خودکار می‌تواند تشخیص دهد که این مدل توسط کنترلری بنام LinksController بکار گرفته خواهد شد و با جدولی بنام links در دیتابیس در ارتباط است.</p>
<p>اگر کیک نتواند فایلی مطابق با مدل در app/models بیابد، بطور داینامیک یک آبجکت مدل ایجاد می‌کند. این همچنین به این معناست که اگر بطور تصادفی نام فایل مدل را اشتباه تایپ کنید (مثلا بجای link.php نام فایل links.php شود) کیک هیچ کدام از تنظیمات شما را لحاظ نمی کند و در عوض مقادیر پیشفرض خودش را جانشین خواهد کرد.</p>
<div class="post_caption">ایجاد یک کنترل‌کننده</div>
<p>در این مرحله برای لینک هایمان یک کنترلر ایجاد می‌کنیم. کنترلر جایی است که قصد داریم جزئیات لینک ها را استخراج کنیم. فایلی بنام links_controller.php را با محتویات پایه‌ی زیر در app/controllers ایجاد می‌کنیم:</p>
<div class="syntax_hilite">
<div id="php-35">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> LinksController extends AppController <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Links'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>حال اجازه دهید یک کنش (Action) به کنترلر بیفزایم. کنش اغلب به یک تابع در برنامه اشاره دارد. برای مثال وقتی کاربران درخواست example.com/cake/links/index را ‌می‌دهند (که با example.com/cake/links  مشابه است) انتظار دارند با لیستی از لینک‌ها مواجه شوند. کدی که این کنش را تعریف می‌کند بصورت زیر است:</p>
<div class="syntax_hilite">
<div id="php-36">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> LinksController extends AppController <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Links'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#000000; font-weight:bold;">function</span> index<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'links'</span>, <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'all'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>با تعریف تابع index در LinksController، کاربران می‌توانند به درخواستی مانند این example.com/cake/links/index دسترسی داشته باشند. بطور مشابه اگر تابعی بنام foobar تعریف کنیم کاربران قادر خواهند بود به درخواست example.com/links/foobar دسترسی داشته باشند.</p>
<p>ممکن است کنجکاو شوید تا به طریقی نام‌های کنترلر و کنش را تغییر دهید. فعلاً دست نگهدارید و از قواعد کیک بمنظور ایجاد کنش‌های قابل فهم استفاده کنید. در آینده بدین منظور با routes در کیک آشنا خواهید شد.</p>
<p>در این کنش از تابع set برای گذر داده از کنترل‌کننده به نمایش (view) استفاده می‌کنیم. این خط، متغیر links را برابر مقدار بازگشتی از <span dir="ltr">find('all')</span> تنظیم می‌کند. مدل لینک بطور خودکار در <span dir="ltr">$this->Link</span> موجود خواهد بود چراکه از قواعد نامگذاری کیک استفاده کردیم.</p>
<div class="post_caption">ایجاد یک نما</div>
<p>تا هم اکنون با جریان داده به مدل، منطق برنامه و روند تعریف شده توسط کنترلر آشنا شدید حال اجازه دهید یک نما برای کنش index که در بالا تعریف شد ایجاد کنیم. نماهای کیک در واقع نمایش  اجزایی هستند که در طرح‌بندی (layout)  برنامه کنار هم قرار میگیرند. برای بیشتر برنامه‌ها HTML مخلوط با PHP استفاده می‌شود اما می تواند بصورت XML، CSV یا حتی داده باینری باشد.</p>
<p>آخرین قسمت عنوان قبل را بیاد آورید، که چگونه متغیر links را با متد set به نما ارجاع می‌دادیم؟ خروجی آرایه را می‌توانیم به صورت زیر نشان دهیم:</p>
<div class="syntax_hilite">
<div id="php-37">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// print_r($links) output:</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/array"><span style="color:#000066;">Array</span></a></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">Array</span></a></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><a href="http://www.php.net/link"><span style="color:#000066;">Link</span></a><span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">Array</span></a></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>id<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <span style="color:#800000;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>url<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; http:<span style="color:#FF9933; font-style:italic;">//alvanweb.com</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>title<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; Alvanweb</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#91;</span>body<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; All about web design and progrmming</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>created<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <span style="color:#800000;">2008</span>-<span style="color:#800000;">10</span>-<span style="color:#800000;">22</span> <span style="color:#800000;">20</span>:<span style="color:#800000;">29</span>:<span style="color:#800000;">21</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>modified<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">Array</span></a></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/link"><span style="color:#000066;">Link</span></a><span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <a href="http://www.php.net/array"><span style="color:#000066;">Array</span></a></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>id<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <span style="color:#800000;">2</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>url<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; http:<span style="color:#FF9933; font-style:italic;">//cakephp.org</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>title<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; CakePHP</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#91;</span>body<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; The rapid development php framework</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>created<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt; <span style="color:#800000;">2008</span>-<span style="color:#800000;">10</span>-<span style="color:#800000;">22</span> <span style="color:#800000;">20</span>:<span style="color:#800000;">29</span>:<span style="color:#800000;">21</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span>modified<span style="color:#006600; font-weight:bold;">&#93;</span> =&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>فایل‌های مربوط به نما در app/views در فولدری همنام با واژ‌ه‌ای که در کنترلر تعریف می‌شود، ذخیره می‌شوند. (در اینجا می‌بایستی نام فولدر ما links باشد) برای فرم‌دادن به داده‌ی لینک‌هایمان در قالب یک جدول زیبا(ایجاد صفحه‌ای برای کنش index)، از کد زیر استفاده می‌کنیم:</p>
<div class="syntax_hilite">
<div id="html-38">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">/app/views/links/index.ctp</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">&lt;h1&gt;</span></a></span>Links:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/table.html"><span style="color: #000000; font-weight: bold;">&lt;table&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">&lt;tr&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">&lt;th&gt;</span></a></span>Id<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/th&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">&lt;th&gt;</span></a></span>Title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/th&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">&lt;th&gt;</span></a></span>Created<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/th&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>?php foreach <span style="color:#006600; font-weight:bold;">&#40;</span>$links as $link<span style="color:#006600; font-weight:bold;">&#41;</span>: ?<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">&lt;tr&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">&lt;td&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>?php echo $link<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #ff0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #ff0000;">'id'</span><span style="color:#006600; font-weight:bold;">&#93;</span>; ?<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">&lt;td&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>?php echo $html-<span style="color: #000000; font-weight: bold;">&gt;</span></a></span>link($link['Link']['title'],</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&quot;/links/view/&quot;.$link['Link']['id']); ?&gt;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">&lt;td&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>?php echo $link<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #ff0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #ff0000;">'created'</span><span style="color:#006600; font-weight:bold;">&#93;</span>; ?<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>?php endforeach; ?<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/table&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>احتمالاً متوجه استفاده از آبجکتی بنام <span dir="ltr">$html</span> شده‌اید. این یک نمونه از کلاس HtmlHelper کیک است. کیک‌ پی‌اچ‌پی مجموعه‌ای از این آبجکت‌ها را تحت نام view helpers در خود گنجانده است مواردی از قبیل لینک‌گذاری، خروجی فرم، جاوااسکریپت و آژاکس از این دسته‌اند. اطلاعات تکمیلی درمورد کار با آنها را می‌توانید <a href="http://book.cakephp.org/view/181/">اینجا</a> بیابید. اما انچه در اینجا مهم است که بدان اشاره شود متد link است که بوسیله‌ی پارامترهایی که گرفته است، یک لینک HTML را ایجاد خواهد کرد. در این مرحله می بایستی بتوانید در مرورگرتان مسیر example.com/cake/links/index را ببینید.</p>
<p>اگر بر روی هر یک از لینک‌ها کلیک کنید تا توضیحاتش را ببینید با صفحه‌ی خطایی مواجه خواهید شد مبنی بر این که کنش مربوطه در فایل کنترل‌کننده هنوز تعریف نشده است. بنابراین مجدداً به فایل links_controller.php بر‌ می‌گردیم تا یک کنش بنام view بمنظور نمایش اطلاعات هر لینک ایجاد کنیم:</p>
<div class="syntax_hilite">
<div id="php-39">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> LinksController extends AppController <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span> = <span style="color:#FF0000;">'Links'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">function</span> index<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'links'</span>, <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'all'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#000000; font-weight:bold;">function</span> view<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$id</span> = <span style="color:#000000; font-weight:bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">id</span> = <span style="color:#0000FF;">$id</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'link'</span>, <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">Link</span>-&gt;<span style="color:#006600;">read</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>خوب با set که از قبل آشنایی دارید اما نکته‌ای که در اینجا لازم است به آن اشاره کنیم این است که بجای <span dir="ltr">find('all')</span> از read استفاده کردیم چراکه قصد داریم اطلاعات تنها یک لینک را استخراج کنیم.</p>
<p>دقت کنید کنش view یک پارامتر می‌گیرد که برابر با ID هر لینک است. این پارامتر از طریق درخواست از طریق URL مقداردهی می‌شود بطوریکه اگر کاربری links/view/2 را درخواست دهد، مقدار 2 برابر ID خواهد بود. حال اجازه دهید نمای view را برای این کنش در app/views/links بصورت زیر ایجاد کنیم:</p>
<div class="syntax_hilite">
<div id="php-40">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">/app/views/links/view.ctp</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;h1&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$html</span>-&gt;<span style="color:#006600;">link</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'url'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; ?&gt;&lt;/h1&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;p&gt;&lt;small&gt;Created: <span style="color:#000000; font-weight:bold;">&lt;?php</span> <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'created'</span><span style="color:#006600; font-weight:bold;">&#93;</span>?&gt;&lt;/small&gt;&lt;/p&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;p&gt;&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$link</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'Link'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'body'</span><span style="color:#006600; font-weight:bold;">&#93;</span>?&gt;&lt;/p&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p>حال با کلیک بر روی هر لینک اطلاعات مربوط به آن لینک در صفحه‌ای دیگر نمایش داده خواهد شد. در پست بعدی سایر مراحل را دنبال خواهیم کرد.<br />
<strong>ادامه:</strong> ساخت لینکدونی با CakePHP (<a href="http://weblog.alvanweb.com/2008/10/24/create-linkdump-with-cakephp-part-3/">بخش سوم</a>)</p>
<img src="http://feeds.feedburner.com/~r/alvanweb/~4/428933927" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.alvanweb.com/2008/10/23/create-linkdump-with-cakephp-part-2/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=alvanweb&amp;itemurl=http%3A%2F%2Fweblog.alvanweb.com%2F2008%2F10%2F23%2Fcreate-linkdump-with-cakephp-part-2%2F</feedburner:awareness><feedburner:origLink>http://weblog.alvanweb.com/2008/10/23/create-linkdump-with-cakephp-part-2/</feedburner:origLink></item>
		<item>
		<title>ساخت لینکدونی با CakePHP (بخش اول)</title>
		<link>http://feeds.feedburner.com/~r/alvanweb/~3/428687509/</link>
		<comments>http://weblog.alvanweb.com/2008/10/22/create-linkdump-with-cakephp-part-1/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 16:03:54 +0000</pubDate>
		<dc:creator>مرتضی الوانی</dc:creator>
		
		<category><![CDATA[پی اچ پی]]></category>

		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://weblog.alvanweb.com/?p=155</guid>
		<description><![CDATA[در پست قبل با فریم‌ورک قدرتمند CakePHP و ساختار MVC آشنا شدیم. از آنجایی که فراگیری این ساختار جز با تمرین و در عمل ممکن نیست، در این پست و پست‌های آتی قصد داریم یک پروژه‌ی کوچک را با این فریم‌ورک مرحله به مرحله با هم دنبال کنیم. در ابتدا ساخت یک لینکدونی ساده که [...]]]></description>
			<content:encoded><![CDATA[<p>در <a href="http://weblog.com/blog/2008/09/21/mvc-architecture-in-cakephp/">پست قبل</a> با فریم‌ورک قدرتمند CakePHP و ساختار MVC آشنا شدیم. از آنجایی که فراگیری این ساختار جز با تمرین و در عمل ممکن نیست، در این پست و پست‌های آتی قصد داریم یک پروژه‌ی کوچک را با این فریم‌ورک مرحله به مرحله با هم دنبال کنیم. در ابتدا ساخت یک لینکدونی ساده که قابلیت افزودن، ویرایش و حذف لینک را دارد هدف نهایی است و در مرحله بعد در صورتیکه فرصت محدودم اجازه بیشتری  بدهد قابلیت‌های دیگری نظیر شمارش کلیک، دسته‌بندی و امکان نظر‌دهی افزوده خواهد شد.</p>
<div class="post_caption">آنچه برای شروع کار با کیک مورد نیاز است</div>
<p><strong>1)</strong> سرور HTTP،‌ ترجیاً Apache با mod_rewrite فعال (برای کاربرپسند کردن URL‌ها و کار با فایل‌های htaccess بهتر است قابلیت mod rewrite را فعال کنید. بدین منظور می‌بایستی فایل httpd.conf سرور آپاچی را ویرایش کنید)   </p>
<p><strong>2)</strong> پی‌‌اچ‌پی 4.3.2  یا بالاتر، کیک پی‌اچ‌پی با نسخه‌های 4 و 5 پی‌اچ‌پی کاملاً سازگار است. برای نصب PHP تحت ویندوز خواندن <a href="http://www.toofani.net/archive/2008/05/05/install-php-on-windows-step-by-step.aspx">این مطلب</a> پیشنهاد می‌شود.</p>
<p>برای اجرای کیک موارد فوق کافی است اما در مورد ساخت لینکدونی به یک پایگاه داده نیاز داریم. ترجیحاً از <a href="http://dev.mysql.com/downloads/mysql/">MySQL</a> استفاده می‌کنیم. برای نصب و راه‌اندازی مای ‌اس‌کیو‌ال سرور، خواندن <a href="http://www.toofani.net/archive/2008/06/28/install-mysql-on-windows-step-by-step.aspx">این مطلب</a> پیشنهاد می‌شود. لازم به ذکر است، CakePHP علاوه بر MySQL از پایگا‌ه‌های داده زیر پشتیبانی می‌کند:</p>
<ul class="intro" style="direction:ltr">
<li style="text-align:left">
PostgreSQL| Firebird DB2 | Microsoft SQL Server | Oracle | SQLite | ODBC
</li>
</ul>
<p>برای راحت‌کار کردن با MySQL بهتر است از رابط تحت وب phpmyadmin استفاده کنید یا با استفاده از رابط گرافیکی MySQL GUI Tools دیتابیس را مدیریت کنید. <span id="more-155"></span></p>
<div class="post_caption">نحوه نصب و پیکربندی CakePHP</div>
<p>کیک کاملاً رایگان و کد‌باز است. به دو طریق می‌توانید آخرین نسخه از آن را دریافت کنید. اول اینکه یک نسخه فشرده شده‌ی (zip/tar.gz/tar.bz2) آن را از <a href="http://www.cakephp.org/">اینجا</a> بگیرید یا از مخزن SVN (برای سری 1.2.x.x از <a href="https://svn.cakephp.org/repo/branches/1.2.x.x">اینجا</a>) استفاده کنید. تمامی متعلقات کیک در پروژه‌ای بنام CakeForge جمع آوری شده است. دریافت مستقیم کیک بهمراه مستندات نسخه‌های 1.1 و 1.2 آن در <a href="http://cakeforge.org/projects/cakephp">اینجا</a> موجود است. در این آموزش از سری 1.2 این فریم‌ورک استفاده می کنیم.</p>
<p>پس از دریافت کیک آن را به وب سرور خود منتقل کنید ساختار فولدر‌ها و فایل‌های بیس کیک به صورت زیر است:</p>
<div class="center"><img src="http://alvani.googlepages.com/cakephp_files_structure.jpg" alt="CakePHP Files Structure" /></div>
<p>از فولدر App شروع می‌کنیم، این همان فولدری است که بیشترین کار توسعه پروژه‌ در آن انجام می شود. هر چند نام فایل‌ها و فولدر‌های موجود در این شاخه گویای همه چیز است اما اجازه دهید نگاه دقیقتری به محتویات آن داشته باشیم:</p>
<p><strong>Config </strong>فایل‌های مربوط به پیکربندی برنامه معمولا در اینجا قرار دارند. دقت کنید این فایلها تنظیمات مربوط به هسته فریم ورک را شامل نمیشود (تنها تنظیمات مختصری در مورد پروژه‌ی کاریمان نظیر جزییات اتصال به پایگاه داده، محل قرار گیری فایل‌ها روی سرور و ...)</p>
<p><strong>Controllers </strong>کنترل‌گرها و مولفه‌ها‌ی (کامپونت‌ها‌ی) پروژه‌ در این فولدر قرار خواهند گرفت. پیش از این گفتیم کنترل کننده (کنترلر) درخواست‌هایی که توسط کلاینت ایجاد شده را بررسی و به یه مسیر صحیح هدایت می کند.</p>
<p><strong>Locale </strong>برای فایل‌های مربوط به بومی‌سازی پروژه مورد استفاده قرار می‌گیرد. برای مثال قصد دارید پروژه‌ای را شروع کنید که به چند زبان مختلف موجود باشد، فایل‌های حاوی سایر زبان‌ها در اینجا قرار می‌گیرند.</p>
<p><strong>Models </strong>مدل‌‌های پروژه ‌در این فولدر قرار خواهند گرفت. قبلاً گفتیم که که مدل‌ها به نوعی به داده برنامه اشاره دارد. معمولاً جداول پایگاه‌های داده در اینجا مورد بحث قرار می‌گیرند بطوریکه به ازای هر جدول پایگاه داده، یک فایل در این فولدر قرار خواهد گرفت که بدان جدول اشاره دارد.</p>
<p><strong>Plugins </strong>پکیج‌های پلاگین چنانچه در صورت نیاز برای پروژه نوشته شود در اینجا قرار خواهد گرفت. پس از اتمام پروژه می توانید افزونه‌هایی بنویسید که بدون تغییر اساسی در پروژه قابلیت‌های جداگانه‌ای بدان اضافه کند.</p>
<p><strong>Tmp </strong>در این فولدر اطلاعات تمپ (موقتی) ذخیره می‌شوند. نحوه ذخیره اطلاعات به تنظیمات کیک بستگی خواهد داشت، اما بطور معمول توضیحات مدل، فایل‌های ثبت وقایع و گاهی اوقات اطلاعات نشست‌ها در این فولدر ذخیره می‌شوند.</p>
<p><strong>Vendors </strong>کلاس‌ها یا کتابخانه‌هایی که توسط شخص برنامه‌نویس برای استفاده در برنامه نوشته می‌شوند باید در اینجا قرار بگیرند. جلوتر خواهید دید که بایک تابع توکار براحتی می‌توانید این محتویات را به پروژه‌ الحاق و از آنها استفاده کنید.</p>
<p><strong>Views </strong>صفحات بصری که به نوعی با کاربر در ارتباط است شامل صفحات  مربوط به طرح‌بندی، عناصر، خطا‌ها، راهنماها در اینجا قرار می‌گیرند.</p>
<p><strong>Webroot </strong>در نهایت این فولدر در نصب برنامه می‌بایستی به عنوان root (شاخه اصلی) پروژه بکار گرفته شود. همچنین این فولدر فایل‌های مربوط به CSS، تصاویر و جاوااسکریپت را در بر خواهد داشت.</p>
<p>به فولدر اصلی بر‌میگردیم. دو فولدر cake و vendors   هسته این فریم‌ورک را تشکیل می‌دهند و همین اندازه آشنایی با این دو فولدر برای کار با این فریم‌ورک کافی است (اگر مشتاقید به جمع توسعه دهندگان این فریم‌ورک بپوندید مستندات کیک درمورد توابع و کلاس‌های سازنده هسته کاملاً روشن است)</p>
<p>هر چند توضیحات ساختاری فایل‌ها و فولدرها می توانست بیش از این به تفصیل بیان شود اما بعلت کمبود وقت و دورشدن از هدف اصلی از آنها عبور می‌کنیم . </p>
<div class="post_caption">تنظیمات و مراحل ساخت لینکدونی</div>
<p>یک فولدر بنام cake در وب سرور می‌سازیم و محتویات کیک‌پی‌اچ‌پی را به آن منتقل می‌کنیم. در مرورگر آدرس دایرکتوری که فایل‌های پروژه در آن قرار دارد به صورت زیر خواهد بود:</p>
<div class="center"><img src="http://alvani.googlepages.com/cake_base_address.jpg" alt="CakePHP Base Address" /></div>
<p>اگر وب سرور را اجرا کرده باشید پس از ارسال درخواست صفحه‌‌ی خوش آمد کیک را مشاهده خواهید نمود. چنانچه  چیدمان مطالب موجود آرایش منظمی ندارد (صفحه فاقد تصویر و استایل است)، احتمالاً mod rewrite سرور فعال نیست. بدین منظور فایل httpd.conf وب سرور آپاچی را با یک ویرایشگر متن با کرده و بدنبال خط زیر بگردید و با حذف علامت # از ابتدای خط، mod_rewrite.so را به ماژول‌های وب سرور اضافه کنید. حال وب سرور را ریستارت کنید و صفحه را ریفرش کنید مشکل باید حل شده باشد. </p>
<div class="syntax_hilite">
<div id="html-44">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">#LoadModule rewrite_module modules/mod_rewrite.so </div>
</li>
</ol>
</div>
</div>
</div>
<p>برای اجرای صحیح کیک بطور پیشفرض، تاکید بر این است که mod rewrite سرور فعال باشد اما چنانچه بنا به دلایلی نخواستید این ماژول را به وب سرور اضافه کنید، می‌بایستی تمامی فایل‌های htaccess را از فولدرهای کیک حذف کنید و در فایل app/config/core.php با حذف علامت کامنت (//) از ابتدای خط زیر، کیک را بدون mod rewrite اجرا کنید:</p>
<div class="syntax_hilite">
<div id="css-45">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Configure::write<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #ff0000;">'App.baseUrl'</span>, env<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #ff0000;">'SCRIPT_NAME'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>برای اولین مرتبه که کیک راه‌اندازی می‌شود، در صفحه اصلی هشدارهایی را خواهید دید. در نسخه 1.2 کیک، استایل بکار رفته با رنگ‌های زرد و سبز، کاربر را راهنمایی می‌کند. ابتدا فایل app/config/core.php را باز کنید. Security.salt  را پیدا کنید و آن را به دلخواه تغییر دهید (می توانید دو سه کاراکتر آن رشته را تغییر دهید) این یک رشته تصادفی است که کیک برای رمزنگاری از آن استفاده می‌کند تا هنگامی که مقدار پیشفرض آن را تغییر ندهید خطای زرد رنگ مبنی بر تغییر آن در صفحه اصلی وجود خواهد داشت.</p>
<div class="center"><a href="http://alvani.googlepages.com/first_Cakephp_welcome_page_big.jpg"><img src="http://alvani.googlepages.com/first_Cakephp_welcome_page_small.jpg" alt="CakePHP Welcome Page" title="برای بزرگ دیدن تصویر کلیک کنید" /></a></div>
<p>خطای زرد رنگ دیگری که در این صفحه خواهید دید مربوط به تنظیمات پایگاه داده است. بمنظور رفع آن فایل app/config/ database.php.default را به database.php تغییر نام دهید. پایگاه‌ داده‌ای بنام linkdump درMySQL بسازید و  بمنظور ارتباط پایگاه داده به کیک فایل  database.php را باز کنید و آرایه default را با آنچه قبلاً در نصب پایگاه داده وارد کرده‌اید تنظیم کنید:</p>
<div class="syntax_hilite">
<div id="php-46">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$default</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'driver'</span> =&gt; <span style="color:#FF0000;">'mysql'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'persistent'</span> =&gt; <span style="color:#000000; font-weight:bold;">false</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'host'</span> =&gt; <span style="color:#FF0000;">'localhost'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'login'</span> =&gt; <span style="color:#FF0000;">'root'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'password'</span> =&gt; <span style="color:#FF0000;">'nbuser'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'database'</span> =&gt; <span style="color:#FF0000;">'linkdump'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF0000;">'prefix'</span> =&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>خطای دیگری که ممکن است موجود باشد مربوط به فولدر app\tmp است. قبلاً گفتیم که tmp برای ذخیره‌ی فایل‌های موقتی نظیر ثبت وقایع و نشست‌ها استفاده می‌شود از این رو می‌بایستی مجوز آن را طوری تعیین کنید که قابلیت نوشتن در فولدر فعال باشد. در صورتی که موارد فوق را درست انجام داده باشید صفحه‌ی اصلی کیک به صورت زیر خواهد بود:</p>
<div class="center"><a href="http://alvani.googlepages.com/second_Cakephp_welcome_page_big.jpg"><img src="http://alvani.googlepages.com/second_Cakephp_welcome_page_small.jpg" alt="CakePHP Welcome Page" title="برای بزرگ دیدن تصویر کلیک کنید" /></a></div>
<p>در پست بعدی سایر مراحل را دنبال خواهیم کرد.<br />
<strong>ادامه:</strong> ساخت لینکدونی با CakePHP (<a href="http://weblog.alvanweb.com/2008/10/23/create-linkdump-with-cakephp-part-2/">بخش دوم</a>) و (<a href="http://weblog.alvanweb.com/2008/10/24/create-linkdump-with-cakephp-part-3/">بخش سوم</a>)</p>
<img src="http://feeds.feedburner.com/~r/alvanweb/~4/428687509" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.alvanweb.com/2008/10/22/create-linkdump-with-cakephp-part-1/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=alvanweb&amp;itemurl=http%3A%2F%2Fweblog.alvanweb.com%2F2008%2F10%2F22%2Fcreate-linkdump-with-cakephp-part-1%2F</feedburner:awareness><feedburner:origLink>http://weblog.alvanweb.com/2008/10/22/create-linkdump-with-cakephp-part-1/</feedburner:origLink></item>
		<item>
		<title>مقدمه‌ای بر معماری MVC در CakePHP</title>
		<link>http://feeds.feedburner.com/~r/alvanweb/~3/398934725/</link>
		<comments>http://weblog.alvanweb.com/2008/09/21/mvc-architecture-in-cakephp/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 14:17:59 +0000</pubDate>
		<dc:creator>مرتضی الوانی</dc:creator>
		
		<category><![CDATA[پی اچ پی]]></category>

		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://weblog.alvanweb.com/?p=154</guid>
		<description><![CDATA[همانطور که در پست قبل گقتم CakePHP از معماری MVC استفاده می کند. این معماری یه الگوی طراحی نرم‌افزاره که برنامه‌نویسی بر این مبنا، برنامه رو به سه بخش اصلی تقسیم می‌کنه:
1- Model مدل به داده برنامه اشاره دارد (معمولا جداول پایگاه داده). 2- View شاید هیچ لفظ فارسی جز خود این واژه نتونه جایگزین [...]]]></description>
			<content:encoded><![CDATA[<p>همانطور که در پست قبل گقتم <a href="http://cakephp.o