[ZF] Kiểm soát các thông báo lỗi trên ứng dụng

Một trong những vấn đề mà tôi nhận được từ phản hồi của các bạn gần xa về zend framework là làm thế nào để đọc được thông báo lỗi từ zend. Thật đau đầu khi chúng ta phải tiếp cận với kiểu thông báo lỗi “rối như tơ vò” mà zend framework đang hiển thị phải không nào ?. Ở bài này, tôi sẽ hướng dẫn các bạn làm chủ các thông báo lỗi, qua đó sẽ dễ dàng kiểm soát các lỗi phát sinh một cách dễ dàng.

Để có thể kiểm soát thông báo lỗi, trước tiên tại file application.ini ta phải cấu hình bật các chức năng cảnh báo trong zend framework. Chức năng cảnh này thường sẽ được tắt, vì khi đưa source lên mạng, rõ ràng chúng ta hoàn toàn không muốn khách đọc được hoặc thấy được các vấn đề mà chúng ta gặp phải. Vì điều đó thật mạo hiểm, nếu khách là người am hiểu về hacking.

Tại file application.ini ta bổ sung và chỉnh sửa các tham số như sau:

2 dòng đầu sẽ giúp chúng ta liệt kê các thông báo lỗi cơ bản trong PHP. Và dòng thứ 3 sẽ giúp chúng ta hiển thị các thông báo lỗi cụ thể khi sử dụng zend framework.

+ Đối với mô hình không module (mô hình mặc định).
Hãy tạo ErrorController.php với nội dung như sau:

Tiếp tục, hãy tạo trong thư mục views/scripts thư mục tên error và tạo file error.phtml với nội dung sau:

Như vậy là bạn vừa thiết lập thành công controller error. Với controller này, mỗi khi hệ thống của chúng ta bị lỗi, thì ngay lập tức sẽ có thông báo lỗi ngay. Và dĩ nhiên, thông báo này sẽ rõ ràng hơn và dễ thở hơn đối với người lập trình rất nhiều.

Giả sừ ở đây, tôi tạo IndexController.php, trong IndexController tôi lại tạo indexAction và cố tình không tạo file index.phtml. Khi chạy ứng dụng, nếu chưa cấu hình tôi nhận được thông báo như hình bên dưới. (Khó đọc lỗi)

Nhưng nếu bạn đã cấu hình ErrorController theo hướng dẫn ở trên thì kết quả sẽ hiển thị như hình bên dưới:

Với thông báo ở trên, ta thấy rằng mọi thứ đã rõ ràng hơn nhiều rồi phải không nào. Nó chỉ ra cho ta thấy tại thư mục index ta thiếu file index.phtml. Và dĩ nhiên, điều đó hoàn toàn không khó để khắc phục.

+ Đối với mô hình multi module.
(xem thêm về hướng dẫn cấu hình multi module nếu bạn chưa rõ cách cấu hình)
Hãy tạo một module có tên là error theo cấu trúc như sau:

modules
———error
—————controllers
———————-ErrorController.php
—————views
———————-scripts
—————————–error
———————————–error.phtml

Tiếp tục, ta copy ErrorController.php, error.phtml giống ở trên theo cấu trúc bên dưới. Dĩ nhiên, khi làm việc với mô hình module ta cũng cần phải khai báo module khi khởi tạo controller. Và điều đó chỉ bởi việc chỉnh sửa nhỏ như sau:

Ta thấy, chỉ cần thêm chữ Error ở trước ErrorController là xong.
Sau khi đã hoàn tất công đoạn này, ta cũng cần khai báo cho hệ thống biết. Khi các module khác bị lỗi, thì sẽ gọi module error này ra để thể hiện thông báo lỗi. Để làm được điều này, ta mở file bootstrap.php ở thư mục application và thêm vào 1 phương thức như sau:

Khi bạn hoàn tất điều này nghĩa là chúng ta đã thiết lập xong việc thể hiện lỗi trong zend framework. Và giờ hãy thử tạo code bị lỗi như ở trên để kiểm tra, bạn sẽ thấy kết quả hiển thị thông báo lỗi chi tiết như ở trên đối với mô hình module hóa ứng dụng.

Hy vọng, bởi việc sử dụng ErrorController này sẽ ít nhiều giúp cho các bạn giải quyết các vấn đề liên quan đến việc hiển thị lỗi khi mới lần đầu tiếp cận với zend framework.

(Bùi Quốc Huy) – Nguồn QhOnline.Info

Comments

comments

Share this Post :

No comments yet.

Please Post Your Comments & Reviews

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