Hướng dẫn sử dụng làm web với cakephp

Hướng dẫn sử dụng làm web với cakephp

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át triển những ứng dụng web nhanh, mạnh mà không mất tính linh hoạt của nó. Và điều quan trọng là CakePHP is free.Trang chủ cakephp: http://cakephp.org Để 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 http://manual.cakephp.org

  • 1 Giới thiệu về cakePHP
  • 2 Download framework
  • 3 Cài đặt và cấu hình cakephp
  • 3.1 Cài đặt
  • 3.2 Cấu hình
  • 4 Ví dụ sử dụng CakePHP để quản lý khách hàng trong web application "Quản lý phòng trọ"
  • 4.1 Tạo bảng cơ sở dữ liệu
  • 4.2 Viết Code
  • 4.3 Mô hình hoạt động
  • 4.4 Model
  • 4.5 Controller
  • 4.6 View
  • 4.7 Hoàn chỉnh các chức năng của modul quản lý customer

Download framework

Click vào liên kết sau để tải về cakephp framework: http://cakephp.org/downloads (chọn stable release).

Cài đặt và cấu hình cakephp

Cài đặt

Để sử dụng nó, cần phải đáp ứng những yêu cầu sau: - Một HTTP Server (vd như 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ài hướ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 Version 5.1.6 - MySQL Database Version 5.0.24a - phpMyAdmin Database Manager Version 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 trang database.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 file database.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ôi sẽ nói đến tính năng, cũng như mô hình hoạt động của CakePHP, cách viết mộ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 http://localhost/MyCake/ bạn sẽ thấy giao diện như sau

Cần chú ý đến 2 dòng Your database configuration file is present. Cake is able to connect to the database. Xác định xem bạn đã kết nối được Cake vớ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ẫn chỉ đị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 http://localhost/MyCake/customers 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ụng cakephp để viết ứng dụng web. Tiếp theo tôi sẽ giải thích cho các bạn mô 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 ...

Mô hình hoạt động

Như tôi đã giới thiệu CakePHP là một framework, mô hình hoạt động của nó tương tự mô hình 3 lớp MVC trong lậ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ới cơ sở dữ liệu của chúng ta.

Model

Trong ví dụ trên các bạn thấy trong file customer.php với cách viết code như trên, được Cake hiểu là ta muốn tạo một model tên là Customer để sử dụng trong CustomersController của chúng ta. Biến $name được chỉ định để tránh trườ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ớp Customer 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àm của model bạn có thể tham khảo tại http://manual.cakephp.org/chapter/models

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ác yêu cầu theo ý muốn của chúng ta để thể hiện lên view vidu như các hàm xử lý thêm, xóa, sữa và hiển thị, ..., là nơi mà tất cả các hoạt động củ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ạo một CustomersController dùng để quản lý việc sử dụng, các hoạt động của CustomerModel. Tương tự lớp CustomersController sẽ kế thừa từ lớp AppController. 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 được lấy từ bảng customers từ database. Để xem chi tiết về controller các bạn có thể tham khảo tại: http://manual.cakephp.org/chapter/controllers

View

View là nơi thể hiện dữ liệu đã được xử lý của chúng ta. Một view được xem như 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 view thô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ức set() ở 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 trong phần tới. Phương thức link() được sử dụng để xuất ra một liên kết giống href 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 Customer thì 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>
Tags: 
Bạn thấy bài viết này như thế nào?: 
Average: 8.2 (6 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Apple sẽ sử dụng camera 3D lên các sản phẩm tiếp theo

Apple sẽ sử dụng camera 3D lên các sản phẩm tiếp theo

Apple có thể đang trong quá trình chuẩn bị để mang camera 3D lên các thiết bị tiếp theo của hãng.

CMS Drupal, Drush

Hướng dẫn sử dụng Drush tool cho người mới bắt đầu

Drush is a great tool for quickly managing routine tasks with a Drupal installation.

Những điều cần biết khi làm Social Media

Những điều cần biết khi làm Social Media

Nếu bạn có ý định trở thành một nhà hoạch định chiến lược trong lĩnh vực truyền thông xã hội (Social Media) cho một công ty nào đó thì đoạn Infographic thống kê dưới đây sẽ rất có ích cho bạn.

Công ty diệt chuột T&C

 

Diet con trung