Ngoài ra, CakePHP cũng cho phép người sử dụng tùy biến hoặc viết riêng một component để phục vụ cho ứng dụng của mình. Để sử dụng các component trong CakePHP Framework, trong controller ta khai báo :
<?phpCách đặt tên cho Component
var $components=array('Acl',’Mail’);
?>
Tên class helper = tên component + "component"
Ví dụ: Muốn tạo một component có tên là Demo thì class tương ứng là DemoComponent và tên file là demo.php được đặt trong thư mục app/controllers/components. Và chức năng của component này là loại bỏ dấu tiếng Việt các bài viết mà tôi nhận được từ user. Ta làm như sau :
<?php
class DemoComponent extends Object{
function initialize(&$controller, $settings = array()) {
$this->controller =& $controller;
}
function startup(&$controller) {
}
function beforeRender(&$controller) {
}
function shutdown(&$controller) {
}
function beforeRedirect(&$controller, $url, $status=null, $exit=true) {
}
function redirectSomewhere($value) {}
function unicode_convert($str){
if(!$str) return false;
$unicode = array(
'a'=>array(
'á','à','ả','ã','ạ','ă','ắ','ặ','ằ','ẳ','ẵ','â','ấ','ầ','ẩ','ẫ','ậ'),
'A'=>array(
'Á','À','Ả','Ã','Ạ','Ă','Ắ','Ặ','Ằ','Ẳ','Ẵ','Â','Ấ','Ầ','Ẩ','Ẫ','Ậ'),
'd'=>array('đ'),
'D'=>array('Đ'),
'e'=>array('é','è','ẻ','ẽ','ẹ','ê','ế','ề','ể','ễ','ệ'),
'E'=>array('É','È','Ẻ','Ẽ','Ẹ','Ê','Ế','Ề','Ể','Ễ','Ệ'),
'i'=>array('í','ì','ỉ','ĩ','ị'),
'I'=>array('Í','Ì','Ỉ','Ĩ','Ị'),
'o'=>array(
'ó','ò','ỏ','õ','ọ','ô','ố','ồ','ổ','ỗ','ộ','õ','ớ','ờ','ở','ỡ','ợ'),
'0'=>array(
'Ó','Ò','Ỏ','Õ','Ọ','Ô','Ố','Ồ','Ổ','Ỗ','Ộ','Õ','Ớ','Ờ','Ở','Ỡ','Ợ'),
'u'=>array('ú','ù','ủ','ũ','ụ','ý','ứ','ừ','ử','ữ','ự'),
'U'=>array('Ú','Ù','Ủ','Ũ','Ụ','Ý','Ứ','Ừ','Ử','Ữ','Ự'),
'y'=>array('ý','ỳ','ỷ','ỹ','ỵ'),
'Y'=>array('Ý','Ỳ','Ỷ','Ỹ','Ỵ'),
'-'=>array(' ','.','/',''','’','(',')',',','!','"','"','"','%','&','@','#','$'),
);
foreach($unicode as $nonUnicode=>$uni){
foreach($uni as $value)
$str = str_replace($value,$nonUnicode,$str);
}
return $str;
}
}
?>
Tiếp theo tạo 1 Controller tên Testdemos (app/controllers/ testdemos _controller.php) có nội dung như sau :
<?php
class TestdemosController extends AppController {
var $components = array("Demo");
function test_component(){
$string = "Thế Giới WEB - thegioiweb.net.vn";
$data = $this->Demo->unicode_convert($string);
$this->set("data",$data);
}
?>
Tạo file test_component.ctp trong thư mục app/views/testdemos có nội dung hiển thị dữ liệu từ controller testdemo_controller.php
<?phpTruy cập tới controller testdemos/test_component để kiểm tra kết quả.
echo $data;
?>
Lưu ý: Khi lập trình PHP, trong các component được khai báo trong controller nào thì chỉ được sử dụng trong controller đó. Tuy nhiên để sử dụng chúng ở mọi nơi thì ta giải quyết như sau:
Tạo file app_controller.php đặt trong thư mục app với nội dung :
<?php
class AppController extends Controller {
var $components=array('Acl',’Mail’);
}
Mọi thứ đặt trong AppController sẽ có tác dụng trên toàn bộ các Controller khác, do đó ta chỉ cần khai báo :
var $components=array('Acl',’Mail’);
0 nhận xét:
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.