[CakePHP]: Thủ thuật thêm 1 Component trong CakePHP

là những thành phần mở rộng trong Framework. Cho phép người sử dụng tùy biến và sử dụng nó linh hoạt. Chẳng hạn như một số hữu ích trong cakePHP mà chúng ta thường dùng như: ACL (phân quyền), mail, time, security,…

Ngoài ra, để thực hiện những mục đích riêng biệt. CakePHP cũng cho phép người sử dụng tự thêm thắt 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 có sẵn trong , trong ta khai báo:

Giả sử tôi muốn loại bỏ dấu tiếng Việt các bài viết mà tôi nhận được từ user, không chỉ các bài bình luận về sản phẩm mà cả các bài bình luận về dự án, về hình ảnh nào đó trong website của tôi…
cake com 01 [CakePHP]: Thủ thuật thêm 1 Component trong CakePHP
Cách đặt tên cho 1 Class Component :

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

Component mà tôi muốn tạo ra có tên là Common, class tương ứng là CommonComponent và file tương ứng là common.php (app/controllers/components/common.php)
cake com 02 [CakePHP]: Thủ thuật thêm 1 Component trong CakePHP
Nội dung file common.php như sau:

Tuy nhiên ,code bạn vẫn chạy được nhưng sẽ nhận được thông báo lỗi như sau :

Warning (2): call_user_func_array() [function.call-user-func-array]:…

Ít nhiều một số bạn sử dụng các component được chia sẽ trên mạng và cũng sẽ gặp lỗi như vậy. Mà trong khi đó tác giả lại không nhắc đến cách khắc phục , có lẽ một phần họ cho là kiến thức căn bản của chúng ta đã nắm vững .Nhưng không sao, cách phục như sau :
Thêm vào Class Component của bạn dòng code dưới đây :

Vậy Component Common hoàn chỉnh của tôi như sau :
(app/controllers/components/common.php)

Cách sử dụng lớp Component 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 Comonent Common vừa tạo

Tạo file test_component.ctp (app/views/testcommons/ test_component.ctp)

Chạy thử : http://localhost/cakephp/testcommons/test_component
cake com 03 [CakePHP]: Thủ thuật thêm 1 Component trong CakePHP
Chú ý :
Biến $components được khai báo trong Controller nào thì chỉ dùng được trong Controller đó
Nếu tôi khai báo trong Controller NewsController thì sang trang Controller Product, dùng $this->Common->unicode_convert() 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 com 04 [CakePHP]: Thủ thuật thêm 1 Component trong CakePHP

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="">