cach dang ky m88 |

Viết component Joomla 2.5 : Task và luồng xử lý

Ở phần trên, chúng ta đã chắc chắn rằng khi sử dụng thanh Toolbar thì chúng ta luôn có thể lấy trong Request giá trị task bằng cách:


Cũng có lúc chúng ta sử dụng phương thức getVar() như sau:


Ở cách thức này, nếu trong request (mảng $_REQUEST) không có phần tử nào có tên là task thì sẽ trả về giá trị display cho lời gọi phương thức.

Xem lại tập tin sach.php, chúng ta đã đặt viết mã nguồn như sau:

Ở dòng số 9, chúng ta gọi phương thức execute() và truyền vào tham số là task lấy được từ request. Cách làm việc của phương thức execute($task) – giả sử cụ thể là execute(‘edit’) - như sau:

Tương tự như thế, nếu giá trị $task là ‘save’ thì sẽ gọi đến phương thức save() của SachController nếu có, nếu không có thì gọi phương thức display().

Đối chiếu với trường hợp hiện tại, chúng ta chưa viết bất cứ phương thức nào của SachController cả. Như vậy, trong tất cả các trường hợp thực thi ở phần trước, Joomla đều thực thi phương thức display() của lớp SachController (phương thức này được kế thừa từ lớp cha là lớp JController).

Một điều các bạn cũng cần phải lưu ý là ở đây, chưa có mối liên hệ gì với View và Model hết, thực sự thì việc thực thi View và Model được làm trong phương thức display() của lớp Controller. Về cơ bản phương thức display() của lớp JController lần lượt thực thi 5 công việc sau:

1. Lấy giá trị của biến view trong request, nếu không có trả về giá trị là tên của component (trong trường hợp này là ‘sach’).
2. Khởi tạo đối tượng của lớp View tương ứng với giá trị vừa lấy được có nghĩa

Nếu lấy được giá trị ‘sach’ thì khởi tạo đối tượng lớp SachViewSach
Nếu lấy được giá

trị ‘loai’ thì khởi tạo đối tượng lướp SachViewLoai
3. Khởi tạo đối tượng của lớp Model tương ứng với giá trị vừa lấy được có nghĩa

Nếu lấy được giá trị ‘sach’ thì khởi tạo đối tượng lớp SachModelSach
Nếu lấy

được giá trị ‘loai’ thì khởi tạo đối tượng lướp SachModelLoai
4. Gọi phương thức setModel() của đối tượng View để thiết lập mối quan hệ giữa đối tượng View và đối tượng Model vừa khởi tạo
5. Gọi phương thức display() của đối tượng View
Vậy, nếu truy cập lần lượt theo đường dẫn index.php?option=com_sach (hoặc index.php?option=com_sach&view=sach) và index.php?option=com_sach&view=loai thì chúng ta sẽ có các quá trình thực thi như sau:

Chúng ta đã nói Controller “điều khiển” giữa các View và các Model và đây là cách mà nó thực hiện việc điều khiển đó. Đơn giản là khởi tạo các đối tượng tương ứng với giá trị mà người dùng Request.
Khi đã hiểu cách thức hoạt động của Controller dựa vào task và phương thức display() của lớp JController dựa vào view trong Request, chúng ta có thể tùy ý Override chúng để các thành phần View, Model, Controller làm việc theo yêu cầu của chúng ta.
Tới đây, lưu ý cho các bạn là hãy luôn nhớ nếu có override phương thức display() của JController thì hãy nhớ gọi lại parent::display() để nó thực thi View và Model cho chúng ta. Nếu có viết thêm các phương thức xử lý ví dụ như add() hay save() cho SachController thì hãy nhớ tới việc gọi parent::display() hoặc $this->display() để thực thi View và Model.
Ngoài ra thì lời khuyên cho các bạn như sau: Hãy tiết kiệm khi viết mã cho lớp Controller của bạn, đừng bỏ mọi thứ vào đó mà chỉ những phương thức nào dùng chung cho nhiều View khác nhau mới nên viết ở Controller.

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 |