Bài Component, cách viết một component Cakephp chúng ta đã cùng tìm hiểu qua component, cách tạo ra một component cho riêng mình, sử dụng trong controller và hiển thị ngoài view. Ở bài số 10 này chúng ta sẽ tìm hiểu qua Helper, cách tạo ra một Helper và sử dụng nó. Mục đích của Helper là tạo ra các thư viện mà có thể sử dụng ở bất cứ đâu trong View. Trong Cakephp cũng có hỗ trợ chúng ta nhiều Helper như: form, html, ajax, number, session, rss, xml, time….

Cách tạo: Trong bài chúng ta sẽ tạo ra Helper có tên là Lib tương đương tên file là LibHelper.php trong thư mục app/View/Helper/, trong file này ta tạo ra một function có tác dụng sinh ra một chuổi ngẫu nhiên, tên class có cú pháp là Tên lớp helper = tên helper + “Helper” nội dung file như sau:

<?php
  class LibHelper extends AppHelper {
    function randomNumber($option=10){
      $int = rand(0,51);
      $a_z = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
      $rand_letter = $a_z[$int];
      for($i=1;$i<$option;$i++){
        $int1 = rand(0,51);
        $rand_letter.= $a_z[$int1];
      }
      return $rand_letter;
    }
  }

Chú ý rằng AppHelper là lớp cha cho mọi Helper. Vì vậy khi tạo ra một Helper mới, bạn có thể extends(kế thừa) từ AppHelper hoặc từ một Helper nào đó có sẵn của CakePHP như: HtmlHelper,…

Cách sử dụng helper Lib vừa mới tạo:

Đầu tiên tạo controller TesthelpersController.php để sử dụng helper Lib có nội dung:

<?php
  class TesthelpersController extends AppController{
    public $helpers = array('Lib');//sử dụng helper Lib
    function test(){
      $this->render("test"); // load file view test.ctp
    }
  }

Chú ý muốn sử dụng Helper nào thì trong controller khai báo nó thông qua biến $helpers

Tiếp theo tạo thư mục Testhelpers và file test.ctp trong thư mục (app/View/Testhelpers/test.ctp), nội dung file test.ctp:

<?php
  echo $this->Lib->randomNumber();
?>

Tiến hành chạy thử với url: http://localhost:8080/cakephp/testhelpers/test

2015-10-14_115741Chú ý: khi gọi biến $helper trong controller nào thì sẽ được sử dụng trong View của controller đó, không khai báo trong controller mà sử dụng ngoài view thì sẽ báo lỗi ngay. Giống như conponent nếu muốn sử dụng cho mọi nơi thì ta khai báo biến $helper này trong file AppController.php, cách khai báo thì cũng giống như trong controller bình thường, ngay phía sau tên class

<?php
class AppController extends Controller {
var $helpers = array('Lib', 'Form');

......
}
?>

Bài tìm hiểu $helper đến đây kết thúc, chúc các bạn thành công.

Kết luận

  1. Mình thì cũng ít khi sử dụng $helper tự tạo chỉ thường sử dụng $helper có sẳn của CakePHP, còn nếu muốn dùng một hàm gì đó tự viết thì cứ sử dụng component, vì viết trong component có thể dùng cho controller và cả view nữa(xem lại Bài 9)
  2. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  3. Cảm ơn các bạn đã đọc.

Nongdanit.info
[Cakephp] Bài 10 – Helper, tạo một helper trong Cakephp