cach dang ky m88 |

Viết component Joomla 2.5 : Toolbar và cách làm việc với adminForm

1. Tạo một Toolbar
Quan sát các màn hình trang quản trị của Joomla, dễ dàng nhận thấy một màn hình làm việc thường có 2 vùng chính

Vùng Toolbar ở phía trên. Trong vùng này thì tiêu đề của màn hình nằm ở bên trái, các nút nhấn nằm ở bên phải
Vùng dữ liệu ở phía dưới. Vùng này có thể hiện thị lưới dữ liệu hoặc form nhập liệu tùy thuộc chức năng đang thao tác.

Khi lập trình cho các thành phần View của component, chúng ta phải lần lượt tạo ra hai vùng này.
Chúng ta sẽ tạo thanh toolbar gồm các nút sau cho màn hình Danh sách sách:
New
Edit
Delete
Publish
Unpublish

Để làm điều này, trong tập lớp SachViewSach định nghĩa phương thức defaultToolbar() có phần cài đặt như sau:

Trong phương thức display() đã viết, thêm dòng gọi phương thức defaultToolbar(), mã nguồn của nó sẽ như sau

Dòng thứ 7 trong đoạn code trên là chỗ chúng ta gọi phương thức defaultToolbar(), bây giờ thực thi lại component và xem kết quả thu được, chúng ta có thanh Toolbar hiển thị ở đúng vị trí mong muốn như hình sau:

Rất dễ dàng, quay lại với đoạn code định nghĩa phương thức defaultToolbar(), ở đó chúng ta đã sử dụng các phương thức tĩnh của lớp JToolbarHelper để tạo ra các nút, câu hỏi đặt ra là tập tin này được định nghĩa ở đâu và có bao nhiêu nút được hỗ trợ sẵn.

Trả lời câu hỏi thứ nhất, lớp này được định nghĩa trong tập tin administrator/includes/toolbar.php.

Câu hỏi thứ 2 ta có thể có ngay lời giải khi xem mã nguồn của tập tin này. Có cả thảy 35 nút được Joomla 2.5 tạo sẵn cho chung ta sẵn dùng. Và tất nhiên nó cũng cung cấp cơ chế để chúng ta tạo ra các nút riêng của mình theo yêu cầu của mỗi component khác nhau. Danh sách 35 phương thức tạo nút đó được liệt kê sau đây:

2. Các nút làm việc như thế nào ?

Về cơ bản, mỗi nút sẽ mang một giá trị chuỗi mà ta tạm gọi là task. Ví dụ nút tạo bởi JToolbarHelper::addNew() có task là add, nút tạo bởi JToolbarHelper::editList() có task là edit.

Joomla đã viết sẵn mã Javascript kèm với mỗi nút để khi người dùng bấm vào một nút trên thanh Toolbar sẽ diễn ra 4 điều sau một cách tuần tự:
1. Tìm đền thẻ <form> có tên là adminForm
2. Tìm đến thẻ <input> có tên là task trong form adminForm
3. Gán giá trị task mà nút đó mang cho thuộc tính value của <input> có tên là task trên
4. Submit form có tên adminForm trên

Đó là cách mà thanh Toolbar hoạt động. Mỗi khi bạn nhấn một nút, Joomla sẽ gán giá trị tương ứng cho thẻ input có tên là task trong form có tên adminForm rồi submit form đó. Và tất nhiên một phiên làm việc mới được bắt đầu.

Vậy, để sử dụng được thanh Toolbar thì chúng ta còn cần phải tạo thêm form có tên adminForm và input có tên task trong form đó. Để làm việc này chúng ta sẽ viết thêm một phương thức cho lớp SachViewSach có tên là defaultView() có mã nguồn như sau:

Chỉ toàn là HTML, tạm thời cứ vậy đã. Tiếp theo chúng ta sửa lại phương thức display() như sau:

Như các bạn thấy, ở đây chúng ta lần lượt gọi 2 phương thức defaultView() và defaultToolbar(), khi Joomla thực thi phương thức display() này sẽ xuất cả thanh Toolbar và đoạn html có form adminForm đã viết trong defaultView(). Thực thử chúng ta thấy nội dung hiển thị vẫn tương tự như cũ. Tuy nhiên khi bấm nút New trên thanh Toolbar kết quả có một chút thay đổi ở vùng bên dưới như sau:

Để chúng ta rõ hơn về cách thức hoạt động của Toolbar thông qua task chúng ta sẽ làm ví dụ chạy đủ 1 vòng như mô tả sau:

Bấm nút New ==> hiển thị màn hình gồm form cho nhập dữ liệu và thanh toolbar mới
Bấm nút Save & Close ==> Hiển thị lại màn hình ban đầu và xuất nội dung đã nhập trước đó lên trang.

Việc cần làm là định nghĩa thêm một thanh Toolbar và tạo ra một form nhập liệu mới. Chúng ta sẽ lần lượt làm điều đó trong phương thức editToolbar() và editView() như mã sau đây:

Để hai phương thức này được thực thi khi người dùng nhấn vào nút New (có task là add) chúng ta viết lại phương thức display() như sau:

Bây giờ, khi người dùng nhấn nút Add ở màn hình thứ nhất (Danh sách sách), input task sẽ mang giá trị add và form được submit, diễn ra một phiên làm việc (client-server) mới, Joomla lại tiếp tục gọi tới phương thức display(). Ở dòng số 7 giá trị task lấy được tất nhiên sẽ là add, đoạn switch ở dòng số 9 sẽ thực thi ngay case ‘add’ và phương thức editView() và editToolbar() được thực thi cho chúng ta màn hình như sau:

Bây giờ, nếu chúng ta bấm nút Save & Close hoặc Cancel thì quá trình lại tiếp tục với một phiên làm việc mới. Để lấy được nội dung người dùng đã nhập ở màn hình edit này và hiển thị, chúng ta sẽ sửa lại phương thức defaultView() như sau:


Và kết quả sau khi nhập “Hoàng Nguyễn Education” rồi bấm Save & Close như sau:

Đến đây, chắc các bạn đã nắm rõ cách phối hợp làm việc của thanh Toolbar trong Joomla. Nói đơn giản thì chỉ gồm gán task và submit ở Client – rồi dựa vào task đã gán trước đó mà xử lý trên Server.

Các bạn sẽ có câu hỏi là: Tới giờ, lúc nào chúng ta cũng ở trong lớp SachViewSach, chẳng thấy Controller và Model có ý nghĩa gì hết, vậy thực sự chúng làm gì? Câu trả lời sẽ là những nội dung chúng ta sẽ tìm hiểu ngay phía sau.

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 |

quang cao google tai binh duong | quang ba web o binh duong |