* Login   * Register  * FAQ    * Search






Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Thu Jan 15, 2009 7:15 pm 
Offline
Junior Member
User avatar

Joined: Fri Feb 15, 2008 11:32 pm
Posts: 1035
Location: BKA
Age: 23
Giới thiệu về cakePHP

CakePHP là một framework cho php,mục đích của nó là cung cấp một framework cho người sử dụng php pháttriển những ứng dụng web nhanh, mạnh mà không mất tính linh hoạt củanó. Và điều quan trọng là CakePHP is free.Trang chủ cakephp: URL is hidden from guests, please register and login to view the hyperlinkĐể sử dụng nó, yêu cầu người làm phải biết những kiến thức cơ bản vềPHP và HTML, ... Có thể đọc nội dung chi tiết về nội dung cũng như vídụ của nó tại URL is hidden from guests, please register and login to view the hyperlink

Download framework

Click vào liên kết sau để tải về cakephp framework: URL is hidden from guests, please register and login to view the hyperlink (chọn stable release).

Cài đặt

Đểsử dụng nó, cần phải đáp ứng những yêu cầu sau: - Một HTTP Server (vdnhư Apache, IIS) - CakePHP chỉ support trong PHP ver 4 trở lên. -Database: cake hổ trợ các hệ cơ sở dữ liệu sau: MySql, PostgreSQL. Bàihướng dẫn này được viết dựa trên "AppServ Version 2.5.7 for Windows"gồm - Apache Web Server Version 2.2.3 - PHP Script Language Version5.1.6 - MySQL Database Version 5.0.24a - phpMyAdmin Database ManagerVersion 2.9.0.2 Sau khi download cakephp về, bạn giải nén tập tin đó ra(.zip) và sao chép vào thư mục chứa Apache Server (vd:C:\AppServ\www\MyCake). VD:

     /MyCake
       /app
       /cake
       /vendors
       .htaccess
       index.php

Cấu hình

Đểcake có thể làm việc được với database, cần cấu hình lại trangdatabase.php, mặc định trang này không có, để cấu hình ta làm như sau:- Mở file database.php.default ở /app/config và Save As lại thành filedatabase.php. - Điều chỉnh lại các thông số:

      var $default = array('driver'   => 'mysql',
                    'connect'  => 'mysql_connect',
                    'host'     => 'localhost',
                    'login'    => 'user',
                    'password' => 'password',
                    'database' => 'project_name',
                    'prefix'   => );

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

    * Tên bảng trong cake nên ở dạng tiếng Anh số nhiều (vd: users, customers, students, ... )
    * Bảng phải có primary key tên là 'id'
    * 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)

Ví dụ sử dụng CakePHP để quản lý khách hàng trong web application "Quản lý phòng trọ"

Tôisẽ nói đến tính năng, cũng như mô hình hoạt động của CakePHP, cách viếtmột web application bằng cakephp tôi sẽ nói dần với các bạn qua ví dụ:Sau khi cài đặt và cấu hình CakePHP, kiểm tra CakePHP đã setup chưa,bạn test thử bằng cách mở webbrowserlên go URL is hidden from guests, please register and login to view the hyperlink bạn sẽ thấy giao diện như sau:



Cầnchú ý đến 2 dòng Your database configuration file is present. Cake isable to connect to the database. Xác định xem bạn đã kết nối được Cakevới database của bạn hay chưa.

Tạo bảng cơ sở dữ liệu

Ta tạo bảng customers với những field như sau:

id: INT, AUTO_INCREMENT, PRIMARY KEY
name: NVARCHAR
age: INT
address: NVARCHAR

Viết Code

Mởtrình soạn thảo và tạo các file và nội dung như sau lưu theo đường dẫnchỉ định File customer.php -> C:\AppServ\www\MyCake\app\models\

<?php
  
class Customer extends AppModel
  
{
       var
$name = 'Customer';
   }
?>


File customers_controller.php -> C:\AppServ\www\MyCake\app\controllers


<?php
  
class CustomersController extends AppController
  
{
       var
$name = 'Customers';
       function
index()
       {
            
$this->set('customers', $this->Customer->findAll());
       }
   }
?>

File index.thtml -> C:\AppServ\www\MyCake\app\views\customers\ Chú ý tạo thư mục customers trong /app/views

<h1>Customer Manager</h1>
   <table>
       <tr>
           <th>Id</th><th>Name</th><th>Age</th><th>Address</th>
       </tr>
       <?php foreach ($customers as $cust): ?>
       <tr>
           <td><?php echo $cust['Customer']['id']; ?></td>
           <td>
               <?php echo $html->link($cust['Customer']['name'], '/customers/view/'.$cust['Customer']['id']);?>
               <?php echo $html->link(
                   
'Delete',
                   
"/customers/delete/{$cust['Customer']['id']}",
                   
null,
                   
'Are you sure?'
               
)?>

               <?php echo $html->link('Edit', '/customers/edit/'.$cust['Customer']['id']);?>
           </td>
           </td>
           <td><?php echo $cust['Customer']['age']; ?></td>
           <td><?php echo $cust['Customer']['address']; ?></td>
       </tr>
       <?php endforeach; ?>
   </table>
   <p><?php echo $html->link("Add Customer", "/customers/add"); ?>

Xong 3 trang đó, chúng ta test chạy thử , mở webbrowser URL is hidden from guests, please register and login to view the hyperlink Bạn sẽ thấy giao diện trang chính như hình sau:


Như vậy là bạn đã tạo được ứng dụng đơn giản đầu tiên về việc sử dụngcakephp để viết ứng dụng web. Tiếp theo tôi sẽ giải thích cho các bạnmô hình hoạt động của CakePHP, cách viết các trang,cũng như cách sửdụng biến, hàm ...


Top
   
 
 Post subject: Re: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Thu Jan 15, 2009 7:18 pm 
Offline
Junior Member
User avatar

Joined: Fri Feb 15, 2008 11:32 pm
Posts: 1035
Location: BKA
Age: 23
Mô hình hoạt động

Như tôi đã giới thiệu CakePHP là mộtframework, mô hình hoạt động của nó tương tự mô hình 3 lớp MVC tronglập trình hướng đối tượng. Với tầng trên cùng là view, tiếp theo làtầng controller và cuối cùng là tầng model. Tầng model sẽ giao tiếp vớicơ sở dữ liệu của chúng ta.

Model

Trong ví dụ trêncác bạn thấy trong file customer.php với cách viết code như trên, đượcCake hiểu là ta muốn tạo một model tên là Customer để sử dụng trongCustomersController của chúng ta. Biến $name được chỉ định để tránhtrường hợp model của chúng ta trùng với tên của các hàm của php. Và lớpCustomer sẽ được kế thừa các thuộc tính và phưông thức từ lớp AppModel.Để có thể hiểu chi tiết về model và cách sử dụng các thuộc tính và hàmcủa model bạn có thể tham khảo tại URL is hidden from guests, please register and login to view the hyperlink

Controller

Controllerđược sử dụng để quản lý việc giao tiếp với cơ sở dữ liệu, thiết lập cácyêu cầu theo ý muốn của chúng ta để thể hiện lên view vidu như các hàmxử lý thêm, xóa, sữa và hiển thị, ..., là nơi mà tất cả các hoạt độngcủa model ta sẽ quản lý nó được. Trong ví dụ trên(customers_controller.php)đoạn code trên được Cake hiểu rằng ta sẽ tạomột CustomersController dùng để quản lý việc sử dụng, các hoạt động củaCustomerModel. Tương tự lớp CustomersController sẽ kế thừa từ lớpAppController. Hàm index() sẽ được xử lý khi ta gọi trang index.thtml.Trong đó có phương thức set() được sử dụng để gán giá trị là một mảngđược trả về từ phương thức findAll() tại của model Customer. Trong vídụ trên thì biến $customers sẽ mang giá trị là mảng các customer đượclấy từ bảng customers từ database. Để xem chi tiết về controller cácbạn có thể tham khảo tại: URL is hidden from guests, please register and login to view the hyperlink

View

Viewlà nơi thể hiện dữ liệu đã được xử lý của chúng ta. Một view được xemnhư một trang template. Chúng ta có thể lấy dữ liệu từ model tương ứng.Dữ liệu được truyền qua một mãng $data. Trong ví dụ trên thìindex.thtml là một view. Phần tiếp theo tôi sẽ nói đến chi tiết viewthông qua ví dụ trên. Tiếp theo ta tìm hiểu đến các thuộc tính vàphương thức trong index.thtml <?php foreach ($customers as $cust):?> Biến $customers chính là biến mà ta đã thiết lập bằng phương thứcset() ở CustomersController của ví dụ. Nó mang giá trị là một mãng nhưtôi đã nói. $html là một đối tượng của lớp helpers sẽ được đề cập trongphần tới. Phương thức link() được sử dụng để xuất ra một liên kết giốnghref trong HTML với tham số đầu tiên là tựa để của liên kết, tham sốthứ 2 là url.

Hoàn chỉnh các chức năng của modul quản lý customer

Ta sẽ thêm các chức năng thêm, sữa, xóa, hiển thị trong view của chúng ta. Ta thêm các hàm trong customers_controller như sau:


<?php
  
class CustomersController extends AppController
  
{
       var
$name = 'Customers';
       function
index()
       {
            
$this->set('customers', $this->Customer->findAll());
       }
       function
view($id)
       {
          
$this->Customer->id = $id;
          
$this->set('customers', $this->Customer->read());
       }
       function
add()
       {
           if (!empty(
$this->data))
           {
               if (
$this->Customer->save($this->data))
               {
                   
$this->flash('Your customer has been saved.','/customers');
               }
           }
       }
       function
delete($id)
       {
          
$this->Customer->del($id);
          
$this->flash('The customer with id: '.$id.' has been deleted.', '/customers');
       }
       function
edit($id = null)
       {
           if (empty(
$this->data))
           {
               
$this->Customer->id = $id;
               
$this->data = $this->Customer->read();
           }
           else
           {
               if (
$this->Customer->save($this->data['Customer']))
               {
                   
$this->flash('Your customer has been updated.','/customers');
               }
           }
       }
   }
?>


Như vậy ta đã thêm 4 function trong CustomersController của chúng ta.Function sẽ được gọi ở view. Ví dụ trên ta click vào link Add Customerthì function sẽ được thực hiện và thể hiện lên view add của chúng ta.Bạn tạo file add.thtml với nội dung như sau:

<h1>Add Customer</h1>
<form method="post" action="<?php echo $html->url('/customers/add')?>">
    <p>
        Name:
        <?php echo $html->input('Customer/name', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/name', 'Name is required.') ?>
    </p>
    <p>
        Age:
        <?php echo $html->input('Customer/age', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/age', 'Age is required.') ?>
    </p>
    <p>
        Address:
        <?php echo $html->input('Customer/address', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/address', 'Address is required.') ?>
    </p>
    <p>
        <?php echo $html->submit('Save') ?>
    </p>
</form>
  
Trong view add trên dòng <?php echo $html->input('Customer/name',
array('size' => '40'))?> sẽ xuất ra một thẻ input text. Với dòng
lệnh trên thì Cake sẽ hiểu rằng ta sẽ sử dụng trường name trong model
Customer.Tham số thứ 2 là thuộc tính của thẻ input trong HTML. Tương tự
với thẻ submit. Hàm tagErrorMsg() sẽ thông báo lỗi ở view trong trường
hợp dữ liệu nhập của ta bị lỗi. Việc xử lý lỗi sẽ được nói trong phần
sau. Tương tự ta tạo các file edit.thtml, view.thtml như sau:

  edit.thtml


<h3>Edit Your Customer</h3>
<form method="post" action="<?php echo $html->url('/customers/edit')?>">
    <?php echo $html->hidden('Customer/id'); ?>
    <p>
        Name:
        <?php echo $html->input('Customer/name', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/name', 'Name is required.') ?>
    </p>
    <p>
        Age:
        <?php echo $html->input('Customer/age', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/age', 'Age is required.') ?>
    </p>
    <p>
        Address:
        <?php echo $html->input('Customer/address', array('size' => '40'))?>
        <?php echo $html->tagErrorMsg('Customer/address', 'Address is required.') ?>
    </p>
    <p>
        <?php echo $html->submit('Save') ?>
    </p>
</form>

view.thtml

<h3>Your Customer</h3>
<h1>Name   :<?php echo $customers['Customer']['name']?></h1>
<h1>Age    :<?php echo $customers['Customer']['age']?></h1>
<h1>Address:<?php echo $customers['Customer']['address']?></h1>

Như vậy các chức năng của ta đã được thực hiện hoàn chỉnh.

Nguồn: http://vi.wikibooks.org/wiki/H%C6%B0%E1 ... Bi_cakephp


Top
   
 
 Post subject: Re: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Wed Nov 11, 2009 10:16 am 
Offline
Junior Member

Joined: Wed Nov 11, 2009 10:11 am
Posts: 1
Hình như cái này bung lỗi bác ơi: <?php echo $html->tagErrorMsg('Customer/name', 'Name is required.') ?> lỗi như thế này->
Warning (512): Method HtmlHelper::tagErrorMsg does not exist [CORE\cake\libs\view\helper.php, line 143]
Có ai có ý kiến gì hông


Top
   
 
 Post subject: Re: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Fri Feb 26, 2010 10:32 pm 
Offline
Junior Member

Joined: Wed Feb 24, 2010 9:48 pm
Posts: 3
cho minh hỏi cái này, khi mình tao xong csdl và cấu hình file datbase.php xong, tạo model, controller tự  động luôn, khi chạy thì được như thế này và khi truy cập vào 1 bảng dữ liệu thì như thế này


các bạn cho mình hỏi đó là lỗi gì và cách giải quyết như thế nào, tại mình mới tập tành xài cakephp thôi!


Top
   
 
 Post subject: Re: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Sat Mar 13, 2010 12:36 am 
Offline
Junior Member

Joined: Fri Oct 24, 2008 10:42 pm
Posts: 1
Anh em nào có hứng thú với CakePhP thì mail cho mình.
hang05t3@gmail.com tớ gửi source cho (eduportal) viết bằng CakePHP 2.1.x.x


Top
   
 
 Post subject: Re: Hướng dẫn sử dụng làm web với cakephp
PostPosted: Wed Apr 07, 2010 11:49 pm 
Offline
Junior Member

Joined: Wed Apr 07, 2010 11:43 pm
Posts: 1
vấn đề của bạn tuanpro có thể giải quyế được.
bạn vào file cau hình trong apache httpd.conf tìm và thay đổi thuộc tín sau:
#LoadModule rewrite_module modules/mod_rewrite.so bỏ dấu # ở trước
tìm đến
<Directory />
    Options FollowSymLinks
    AllowOverride none
</Directory>
đổ thành
<Directory />
    Options FollowSymLinks
    AllowOverride all
</Directory>
sau khi thiết lập xong như thế bạn có thể chạy lại. ok
đê biết thêm chi tiết vào : http://bakery.cakephp.org/articles/view ... -beginners
nếu không hiểu tiếng anh thì vào www.google.com chọn dịch copy link vào là xong
chúc bạn thành công


Top
   
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Mua Bán | Blackberry PHPCodeVn Style by NinhAnh, Anhxtanh3087
All times are UTC + 7 hours - It is currently Thu Sep 09, 2010 7:50 pm
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group