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

<channel>
	<title>$i-&#62;php(); &#187; hướng dẫn là web bằng Cake</title>
	<atom:link href="http://i-php.net/tag/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-la-web-b%e1%ba%b1ng-cake/feed/" rel="self" type="application/rss+xml" />
	<link>http://i-php.net</link>
	<description>Hãy tiết kiệm điện và sử dụng opensource để bảo vệ môi trường</description>
	<lastBuildDate>Fri, 26 Feb 2010 07:29:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hướng dẫn làm web cơ bản với CakePHP</title>
		<link>http://i-php.net/2009/07/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-s%e1%bb%ad-d%e1%bb%a5ng-cakephp/</link>
		<comments>http://i-php.net/2009/07/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-s%e1%bb%ad-d%e1%bb%a5ng-cakephp/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 17:14:11 +0000</pubDate>
		<dc:creator>tungnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[hướng dẫn là web bằng Cake]]></category>
		<category><![CDATA[hướng dẫn sử dụng CakePHP]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=431</guid>
		<description><![CDATA[CakePHP là 1 trong số nhiều framework dành cho PHP. Ở đây, chúng tôi chọn CakePHP vì đó là 1 công cụ thân thiệt, dẽ sử dụng, nhanh, mạnh và rất linh hoạt. Để có thể học và sử dụng thành thạo 1 cách nhanh chóng bạn phải biết những kiến thức cơ bản về [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHP là 1 trong số nhiều framework dành cho PHP. Ở đây, chúng tôi chọn CakePHP vì đó là 1 công cụ thân thiệt, dẽ sử dụng, nhanh, mạnh và rất linh hoạt. Để có thể học và sử dụng thành thạo 1 cách nhanh chóng bạn phải biết những kiến thức cơ bản về HTML và PHP.</p>
<p>Bây giờ ta bắt đầu thôi nhỉ, đầu tiên bạn phải download CakePHP về : <a href="http://cakephp.org/downloads">Download</a></p>
<h2><span style="color: #ff0000;"><strong>Cài Đặt</strong></span> <span style="color: #ff0000;">:</span></h2>
<p><span style="color: #ff0000;"><span style="color: #000000;">Để có thể sử dụng  framework vừa download về, máy tính của bạn phải đáp ứng thêm 1 số yêu cầu sau :</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">- Một HTTP server (Apache, ISS). Ở đây tôi sử dụng Xampp vì nó khá phổ thông và còn kèm thêm cho bạn MySQL.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">-Database : Cake hỗ trợ các hệ cơ sở dữ liệu sau : MySQL,</span></span> PostgreSQL.</p>
<p>- Chú ý thêm là CakePHP chỉ support trong PHP ver4 trở lên.</p>
<p>Sau khi download thành công và đáp ứng đủ các yêu cầu trên thì bạn có thể giải nén tập tin (.zip) vừa download về và sao chép vào thư mục chứa Apache server (vd :  C:\AppServ\www\CakePHP).</p>
<h2><span style="color: #ff0000;"><strong>Cấu Hình :</strong></span></h2>
<p><span style="color: #ff0000;"><span style="color: #000000;">Đầu tiên, để Cake và DataBase hoạt động cùng nhau, bạn phải cấu hình lại file database.php :</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">-Mở file</span></span> database.php.default tại /CakePHP/app/config/database.php.default</p>
<p>-Điều chỉnh lại các thông số liên quan :</p>
<pre>
<blockquote><code>
var $default = array(
 'driver'   =&gt; 'mysql',
 'connect'  =&gt; 'mysql_connect',
 'host'     =&gt; 'localhost',
 'login'    =&gt; 'user',
 'password' =&gt; 'password',
 'database' =&gt; 'project_name',
 'prefix'   =&gt; ''
<em>);
</em></code></blockquote>

<em></em></pre>
<p>Với user, password, database lần lượt là: tên user, password và database ở trong MySql. Quy ước về đặt tên bảng trong database</p>
<ul>
<li>Tên bảng trong cake nên ở dạng tiếng Anh số nhiều (vd: users, customers, students, &#8230; )</li>
<li>Bảng phải có primary key tên là &#8216;id&#8217;</li>
<li>Nếu có sử dụng quan hệ trong các bảng vd: user_id (user không có s và dấu _ cộng id)</li>
</ul>
<p>-Tiếp đến bạn thay đổi tên file thành database.php  -Cuối cùng, mở file core.php tại /CakePHP/app/config/core.php. Thay đổi security theo ý của bạn :  Configure::write(&#8216;Security.salt&#8217;, &#8216;8rnc4ry438tc34jchcyu34cu5cbn4u&#8217;);  =&gt; Configure::write(&#8216;Security.salt&#8217;, &#8216;&lt;tùy bạn&gt;&#8217;);</p>
<h2><strong><span style="color: #ff0000;">Hướng dẫn sử dụng :</span></strong></h2>
<p><span style="color: #ff0000;"><span style="color: #000000;">Để kiểm tra xem khâu cài đặt có hoàn thành hay không, bạn mở đường dẫn : <a href=" http://localhost/MyCake/"> http://localhost/</a></span></span><a href=" http://localhost/MyCake/">CakePHP</a><a href=" http://localhost/CakePHP/"></a><a href=" http://localhost/MyCake/">/</a> <span style="color: #ff0000;"><span style="color: #000000;">Ở đây tôi không tiện chụp ảnh lại nên bạn chịu khó nhìn giao diện, nếu không thấy <span style="color: #ff0000;">đỏ lòm</span> hay <span style="color: #ffff99;"><span style="color: #ffff00;">vàng khè</span> </span>j` thì cứ yên tâm là đã ok !</span></span> <span style="color: #ff0000;"><span style="color: #000000;">Yên tâm hơn nữa thì hãy tìm </span></span>2 dòng Your database configuration file is present.  và Cake is able to connect to the database.  Nếu tìm tháy thì cùng tôi bắt đầu tiếp.  <span style="color: #ff0000;"><span style="color: #000000;">Còn nếu có 2 màu đặc biệt đấy thì bạn nên xem lại các bước đã làm !</span></span> <strong><span style="color: #800000;">Tạo bảng Cơ Sở Dữ Liệu : </span></strong><span style="color: #800000;"><span style="color: #000000;">tạo bảng </span></span><strong>customers </strong>như sau : <span style="color: #800000;"> </span></p>
<pre>id: INT, AUTO_INCREMENT, PRIMARY KEY
name: NVARCHAR
age: INT
address: VARCHAR</pre>
<p><strong><span style="color: #800000;">Code :</span></strong></p>
<p><span style="color: #800000;"><span style="color: #000000;">Quên mất, bạn đã biết mô hình MVC (Models-Controller-View) là j` chưa nhỉ, nếu chưa thì bạn cứ hiểu nôm na như sau : Mô hình MVC trong lập trình hướng đối tượng hoạt động theo 3 tầng, tầng trên cùng là View, tiếp theo là Controller và tầng dưới cùng là Models.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">- Models : dùng để giao tiếp với Cơ Sở Dữ Liệu của bạn.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">-Controller : dùng để tạo các function để viết các yêu cầu theo ý muốn, lấy dữ liệu từ Cơ Sở Dữ Liệu thông qua Models và hiển thị ra tại View.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">-View : là nơi thể hiện dữ liệu đã được xử, hoặc từ đây ta có thể nhập dữ liệu mới, sau đó Controller sẽ lấy dự liệu từ View chuyển về cho Models để lưu vào Cơ Sở Dữ Liệu. Nói nhanh cho vuông thì View cũng có thể coi là 1 trang template.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">*Để hiểu thêm về mô hình MVC thì bạn hãy search google và tìm hiểu thêm, còn bây giờ tôi phải vào mục chính là làm việc với CakePHP.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">Chúng ta bắt đầu làm việc theo thứ tự 3 tầng MVC từ thấp đến cao.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;"><strong>Đâu tiên là Model : </strong>mở trình soạn, tạo file </span></span><strong>customer.php </strong>tại \CakePHP\app\models\customer.php<br />
<code> </code></p>
<pre>&lt;?php
class Customer extends AppModel
{
   var $name = 'Customer';
}
?&gt;</pre>
<p><strong>Tiếp đến là Controller : </strong>tạo file <strong>custermers_controller.php </strong>tại \CakePHP\app\controllers\custermers_controleller.php</p>
<pre>&lt;?php
class CustomersController extends AppController
{
    var $name = 'Customers';
    function index()
    {
        $this-&gt;set('customers', $this-&gt;Customer-&gt;findAll());
    }
}
?&gt;</pre>
<p><strong>Cuối cùng là View : </strong>file <strong>index.ctp </strong>tại  \CakePHP\app\view\custermers\index.ctp</p>
<pre>&lt;h1&gt;Customer Manager&lt;/h1&gt;
   &lt;table&gt;
       &lt;tr&gt;
           &lt;th&gt;Id&lt;/th&gt;
           &lt;th&gt;Name&lt;/th&gt;
           &lt;th&gt;Age&lt;/th&gt;
           &lt;th&gt;Address&lt;/th&gt;
       &lt;/tr&gt;
       &lt;?php foreach ($customers as $cust): ?&gt;
       &lt;tr&gt;
           &lt;td&gt;&lt;?php echo $cust['Customer']['id']; ?&gt;&lt;/td&gt;
           &lt;td&gt;
               &lt;?php echo $html-&gt;link($cust['Customer']['name'], '/customers/view/'.$cust['Customer']['id']);?&gt;
               &lt;?php echo $html-&gt;link('Delete',"/customers/delete/{$cust['Customer']['id']}",null,'Are you sure?')?&gt;
               &lt;?php echo $html-&gt;link('Edit', '/customers/edit/'.$cust['Customer']['id']);?&gt;
           &lt;/td&gt;
           &lt;/td&gt;
           &lt;td&gt;&lt;?php echo $cust['Customer']['age']; ?&gt;&lt;/td&gt;
           &lt;td&gt;&lt;?php echo $cust['Customer']['address']; ?&gt;&lt;/td&gt;
       &lt;/tr&gt;
       &lt;?php endforeach; ?&gt;
   &lt;/table&gt;</pre>
<p>Có vẻ ổn rồi, bạn hãy thử mở đường dẫn <a href="http://localhost/CakePHP/custermers">http://localhost/CakePHP/custermers</a> để xem kết quả của chương trình bạn vừa viết. Và sau đó tìm hiểu thêm nhiều tính năng nữa của Cake nhé, khi đó bạn sẽ rất &#8220;sướng&#8221; cho mà xem.</p>
<p>Còn tôi thì phải đi làm tách trà đá cái đã !</p>
<p><span style="color: #800000;"><span style="color: #000000;"><strong><br />
</strong></span></span></p>
<p><span style="color: #800000;"><br />
</span></p>
<p><span style="color: #ff0000;"><br />
</span></p>
<pre><em>

</em></pre>
<input id="gwProxy" type="hidden" />
<p><!--Session data--></p>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<p><!--Session data--><br />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden"><!--Session data--></input>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/07/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-s%e1%bb%ad-d%e1%bb%a5ng-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
