Viết Component Joomla 2.5 : Lớp JTable làm việc với các bảng dữ liệu

Như chúng ta đã biết, khi nhấn nút Save & Close (tương ứng với task là ‘save’) trên thanh Toolbar, Joomla sẽ submit adminForm và bắt đầu một phiên thực thi mới. Khi chạy tới Controller, như chúng ta đã biết nếu đối tượng SachController có phương thức tên save (cùng tên với giá trị task) thì phương thức này sẽ được gọi thực thi.

Chúng ta sẽ viết thêm phương thức save() cho lớp SachController. Phương thức này sẽ thực hiện 3 việc chính sau:
1. Bắt toàn bộ dữ liệu gửi lên từ client (khi submit adminForm)
2. Lưu dữ liệu đó vào bảng jos_sach
3. Hiển thị màn hình mặc định của view sách.

Các công việc 1 và 2 chúng ta có thể sử dụng lớp JTable được Joomla cung cấp sẵn để thao tác một cách nhanh chóng. Lớp JTable được định nghĩa trong tập tin libraries/joomla/database/table.php. Trong phần này chúng ta sẽ học cách sử dụng đối tượng này bằng cách tạo các lớp dẫn xuất từ nó. Lần lượt thực hiện các thao tác sau:
1. Tạo thư mục tables trong thư mục com_sach
2. Tạo tập tin sach.php trong thư mục tables mới tạo
3. Mở tập tin sach.php mới tạo và code như sau

Quy tắc cần nhớ ở đây như sau:
L

ớp của chúng ta kế thừa từ lớp JTable
Các property của lớp trùng khớp hoàn toàn với tên các field trong bảng jos_sach
Phương t

hức khởi tạo truyền vào các tham số lần lượt là tên bảng (ở đây là #__sach), tên trường khóa chính (ở đây là id) và tham chiếu của đối tượng cơ sở dữ liệu hiện thời.

Cứ tiếp tục như vậy, nếu trong trường hợp component chúng ta tạo ra có nhiều bảng dữ liệu hơn nữa thì bạn có thể tạo nhiều lớp, mỗi lướp tương ứng với một bảng.

Cũng phải nói ngay từ đầu rằng khi sử dụng các lớp này để làm việc với dữ liệu thì chúng sẽ tương ứng với một record trong bảng tại một thời điểm nào đó.

Tới thời điểm này, nhìn toàn cảnh component của chúng ta lần lượt có các thư mục, tập tin và các lớp như hai hình sau

Thư mục + Tập tin + Lớp

Tiếp tục thôi, qua lại với lớp SachController, mở mã ra và thêm vào phương thức save() có mã nguồn thực hiện lần lượt 3 công việc như ta đã đề cập đến:

Việc tiếp sau là thử nhập thông tin và nhấn Save & Close xem mọi việc diễn ra có ổn thỏa không. Nhập thông tin như sau

Sau đó nhấn Save & Close, kiểm tra bảng jos_sach trong cơ sở dữ liệu chúng ta đã tạo. Nếu chưa có dòng dữ liệu nào được thêm vào thì hãy kiểm tra lại các thao tác bạn đã làm xem có điểm nào không đúng với hướng dẫn hay không.

Dữ liệu đã được thêm vào bảng jos_sach như trong hình sau. Trước khi đọc xuống phía dưới cá bạn xem kĩ hình xem có điều gì chưa ổn trong dòng dữ liệu đã nhé.

Ở trên đã hỏi các bạn có điều gì đó chưa ổn trong dòng dữ liệu này, nếu bạn đã xem qua mà vẫn không thấy điểm gì bất thường thì sẽ biết ngay đây. Đó là cột ngay_tao chưa có dữ liệu phù hợp. Để giải quyết vấn đề một cuốn sách được tạo thời điểm nào chúng ta sẽ tự lấy ngày của hệ thống làm giá trị cho cột này trước khi thêm nó vào cơ sở dữ liệu.

Mở phương thức __construct() của lớp TableSach và thêm vào dòng lấy thời gian hiện tại và gán cho property ngay_tao (dòng 24) như sau:

Tới đây thì mọi chuyện đã khá ổn thỏa. Tuy nhiên, chúng ta chưa xử lý bất cứ ngoại lệ nào. Có rất nhiều ngoại lệ có thể xảy ra khi thao tác với dữ liệu như

Không bắt được dữ liệu từ client
Người dùng nhập đữ liệu không đúng
Không lưu được dữ liệu vào cơ sở dữ liệu



Khi những điều trên xảy ra, tất nhiên chúng ta sẽ phải thông báo đến người dùng. Hoặc kể cả trường hợp dữ liệu đã được thêm thành công chúng ta cũng cần đưa ra một thông báo để người dùng biết

Hổ trợ

Hổ trợ Hữu Phát

Nhân viên tư vấn thiết kế website Mr. Hữu -
Tư vấn Thiết kế website
0188.525.0716 
Yahoo
 
Nhân viên tư vấn thành lập công ty Mrs. Loan -
Tư vấn thành lập công ty
09.798.17170 
Yahoo
 
Nhân viên hổ trợ kỷ thuật mạng Mr. Công -
Nhân viên kỹ thuật
0985.012.596 
Yahoo
 

Tìm kiếm

Thanh toán:

Trao đổi backlink :
thiet ke website binh duong | thiết kế web tại bình dương |

thiết kế website b�nh dương | thiet ke website binh duong | thiết kế web b�nh dương | thiết kế web tại b�nh dương | thiết kế web tại b�nh dương | quang cao google tai binh duong | quang ba web o binh duong |