[CakePHP]: Cách thức xây dựng một helper

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 nào đó sau đó dùng để 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 là một tập hợp các thư viện hữu ích để dùng trong view. đã xây dựng sẵn rất nhiều helper: form, html, ajax, number, session, rss, xml, time….

cake helper 01 [CakePHP]: Cách thức xây dựng một helper
Muốn dùng helper nào thì trong Controller ta phải khai báo thông qua biến $helpers
Ví dụ:

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/

cake helper 02 [CakePHP]: Cách thức xây dựng một helper
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

 

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

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

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

cake helper 03 [CakePHP]: Cách thức xây dựng một 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:

cake helper 04 [CakePHP]: Cách thức xây dựng một helper

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

 

(Thái Thanh Phong)

Cùng Nội Dung:

Liên Quan Khác

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">