Professional Documents
Culture Documents
cc
CakePHP Controller
I- Introduction
II- App controller
III- Pages controller
IV- Các thuộc tính của controller
V- Các phương thức của controller
I- Introduction
– 1 controller được sử dụng để quản lý logic của 1 ứng dụng
– Hầu hết các controller được sử dụng để quản lý logic cho 1 single model. Ví dụ, nếu bạn đang
buid một site cho một trang bakery thì yêu cầu application của bạn phải có: 1 RecipesController
và 1 IngredientsController để quản lý các recipes và các ingredients.
– Recipe model được xử lý bởi RecipesController, Product model được xử lý bởi
ProductsController …
– Các lớp controller kế thừa từ lớp AppController của CakePHP ( AppController kế thừa lớp
Controller trong CakePHP – đây là một thư viện của CakePHP). Lớp AppController có thể được
định nghĩa trong /app/app_controller.php và nó chứa các phương thức được share giữa các
controller trong ứng dụng.
– Controller có thể bao gồm các phương thức actions( Actions là các phương thức mà chỉ được sử
dụng để hiển thị lên view → các phương thức action này nằm trong controller )
– theo mô hình MVC thì dispatcher sẽ gọi action khi có 1 yêu cầu từ user tương ứng.
– Quay trở lại ví dụ trang backery của hồi đầu, RecipesController có thể chưa view(), share() và
search(). Controller này có thể nằm trong /app/controllers/recipes_controller.php và có thể có
code như bên dưới:
<?php
# /app/controllers/recipes_controller.php
function search($query) {
//action logic goes here..
}
}
?>
Hoang.Nguyen || e-mail: vietnam_hoangminhnguyen@yahoo.com || site: http://kattyflea.co.cc
– Như đã giới thiệu ở trên, lớp AppController là một lớp cha của tất cả các lớp controller trong
ứng dụng. Bản thân AppController kế thừa lớp Controller trong thư viện CakePHP.
AppController được định nghĩa trong /app/app_controller.php :
<?php
– Vì lớp AppController là lớp cha của các lớp controller trong ứng dụng, do đó mà các thuộc tính
và các method trong lớp AppController sẽ có thể được share và sử dụng bởi các lớp kon.
– Ví dụ: bạn tạo trang About. ( bạn tạo 1 file view /app/views/pages/about_us.ctp, bạn truy cập nó
bằng cách sử dụng đường dẫn http://example.com/pages/about_us
– để sử dụng Pages controllers, chúng ta chỉ cần copy pages_controllers.php từ core của CakePHP
đến ứng dụng của mình.
1- $name
→ thông thường thì đây là hình thức số nhiều của tên model mà controller sử dụng
Ví dụ:
<?php
?>
ví dụ:
<?php
3- $layout
→ sử dụng $layout để chọn layout cho chương trình /app/views/layouts( $layout sẽ lưu tên của
layout trong /app/views/layouts )
→ nếu giá trị này ko được thiết lập thì layout mặc định sẽ được sử dụng cho ứng dụng của bạn:
default.ctp
ví dụ:
<?php
?>
4- $params
→ được sử dụng để cung cấp quyền truy cập vào các thông tin về request hiện tại:
4.1- form : → $this->params['form'];
4.2- admin : → $this->params['admin'];
4.3- bare : → $this->params['bare'];
Hoang.Nguyen || e-mail: vietnam_hoangminhnguyen@yahoo.com || site: http://kattyflea.co.cc
Ví dụ:
<?php
1.2- render
Ví dụ:
function search() {
// Render the view in /views/recipes/search.ctp
$this->render();
}
}
2- Flow control
2.1- redirect
ví dụ:
Hoang.Nguyen || e-mail: vietnam_hoangminhnguyen@yahoo.com || site: http://kattyflea.co.cc
function placeOrder() {
if($success) {
$this->redirect(array('controller' => 'orders', 'action' => 'thanks'));
} else {
$this->redirect(array('controller' => 'orders', 'action' => 'confirm'));
}
}
2.2- flash
3- Callbacks
3.1- beforeFilter()
3.2- beforeRender()
– được thực thi sau mỗi action của controller( nhưng trước khi view được gọi )
3.3- afterFilter()
– được gọi sau mỗi action và sau rendering được hoàn tất
– _beforeScaffold($method)
– _afterScaffoldSave($method)
– afterScaffoldSaveError($method)
Hoang.Nguyen || e-mail: vietnam_hoangminhnguyen@yahoo.com || site: http://kattyflea.co.cc
– _scaffoldError($method)