Hướng dẫn học: Cách viết 1 Hepler cho CakePHP

Hướng dẫn học: Cách viết 1 Hepler cho CakePHP

Giả sử, bạn có hàm tạo chuỗi ngẫu nhiên, bạn muốn dùng hàm này ở bất cứ nơi đâu trong view, bạn có thể viết hàm này trong một controller nào đó sau đó dùng requestAction để gọi hàm ra.

Tuy nhiên đây không phải là cách tốt, đó là chưa kể tới việc dùng nhiều requestAction sẽ làm cho ứng dụng bị chậm đi. Chúng ta sẽ giải quyết vấn đề này cách xây dựng một helper!

Có thể hiểu nôm na rằng helper trong CakePHP là một tập hợp các thư viện hữu ích để dùng trong view. CakePHP đã xây dựng sẵn rất nhiều helper: form, html, ajax, number, session, rss, xml, time….

Hướng dẫn học: Cách viết 1 Hepler cho CakePHP

Muốn dùng helper nào thì trong Controller ta phải khai báo thông qua biến $helpers

Ví dụ:

var $helpers = array('Html','Form','Javascript','Ajax'); 

Các bạn có thể tìm hiểu về các helper có sẵn của cake bằng cách vào: cake/libs/view/helpers

Và bây giờ, chúng ta bắt đầu đi viết một helper cho riêng mình!

Giả sử helper tôi muốn viết có tên là : Common => tên file tương ứng là common.php

Đặt trong app/views/helpers/

Chú ý rằng AppHelper là lớp cơ sở cho mọi Helper .Do do đó, khi tạo ra một Helper mới, bạn có thể extends từ AppHelper hoặc từ một Helper nào đó có sẵn của CakePHP

Tên lớp helper = tên helper + “Helper”

Bắt đầu với lớp Helper với tên Common , đặt trong thư mục (app/views/helpers/common.php)

Với hàm tạo 1 chuỗi ngẫu nhiên.

<?php
class CommonHelper extends HtmlHelper {

 function create_random_string($num) {
    //Tao du lieu cho hinh ngau nhien
    $chars = array( 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J',  'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T',  'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    $max_chars = count($chars) - 1;
    for($i = 0; $i < $num; $i++) {
      $code = ( $i == 0 ) ? $chars[rand(0, $max_chars)] : $code . $chars[rand(0, $max_chars)];
    }
    return $code;
  }
}
?>

Cách sử dụng lớp Herpler Common vừa mới tạo :

- Tôi tạo 1 Controller tên Testcommons (app/controllers/ testcommons _controller.php) sử dụng lớp Helper Common vừa tạo

<?php
class TestcommonsController extends AppController {
    var $helpers = array('Common');
    
    function test_helper(){
        $this->render("test_helper"); // load  file view test_helper.ctp 
    }
}
?>

- Sử dụng ngoài view : tạo file test_helper.ctp (app/views/testcommons/ test_helper.ctp)

<?php
    echo $this->Common->create_random_string(10);
?>

Chạy thử : http://localhost/cakephp/testcommons/test_helper

Chú ý :

Biến $helpers được khai báo trong Controller nào thì chỉ dùng được trong View của controller đó.

Nếu tôi khai báo trong controller NewsController thì sang trang Product, dùng echo $common->create_random_string(6); sẽ bị báo lỗi ngay ! Như vậy không áp dụng được tính chất “dùng mọi lúc, mọi nơi” .

Nhưng không sao, ta có thể giải quyết vấn đề này bằng cách:

- Tạo file app_controller.php đặt trong thư mục app, nội dung file này như sau:

<?php

class AppController extends Controller {
   var $helpers = array('Html', 'Form','Javascript','Ajax','Common');
}
?>

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 $helpers = array('Html', 'Form','Javascript','Ajax','Common'); 
Tags: 
Bạn thấy bài viết này như thế nào?: 
Average: 7 (1 vote)
Ả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.

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

 
Bài 1 Học sinh lập trình Scratch - Các thẻ lệnh đầu tiên

Bài 1 Học sinh lập trình Scratch - Các thẻ lệnh đầu tiên

Nếu trong nhà bạn có “thế hệ trẻ” ở lứa tuổi biết “vọc” trò chơi điện tử, bạn nên bổ sung một trò chơi hữu ích, giúp bé phát triển trí tuệ: trò chơi lập trình Scratch.

Google sắp tung ra dịch vụ lưu trữ trực tuyến

Google sắp tung ra dịch vụ lưu trữ trực tuyến

Theo thông tin của một tờ báo uy tín, Google sẽ sớm tung ra một dịch vụ lưu trữ đám mây, cạnh tranh trực tiếp với Dropbox hay Box.net.

Biến Profile Facebook thành bức ảnh ghép độc đáo!

Biến Profile Facebook thành bức ảnh ghép độc đáo!

Mời bạn xem thêm bài viết liên quan: 30 giây cho một trang Profile độc đáo - đã xuất hiện những công cụ hỗ trợ làm nên trang profile thành bức ảnh ghép độc đáo như trên!

Tomdesgin.vn

 

Drupal Services