10/10/2018, 13:20
[Help] Xây dựng web theo mô hình MVC and OOP
Chả là em đang dựng một project nho nhỏ theo hướng đối tượng phác theo cách hoạt động của Codeigniter Framework. Mô hình của em đại loại thế này .
+ Trong đó:
- Thư mục controllers , models, views chứa các controller, model và view tương ứng,
các controller và model này thừa kế từ controller cha trong mục libs bên dưới.
- Libs chứa các file điều hướng controller bootstrap.php class dựng sẵn như session, cache, controler cha, model và view cha.
+ Cách hoạt động : file .htaccess rewrite lại url để dữ liệu đổ về file index, index autoload các file trong libs và khởi tạo lớp bootstrap().
Ví đụ khí ta đánh vào http://localhost/vmc/login thì bootstrap sẽ gọi controller login->model->view tương ứng. Đại loại là vậy, em giải thích hơi củ chuối nhưng các pro cũng chẳng lạ gì kiểu này.
Có điều e thắc mắc là. Hoạt động như cách trên thì ta chỉ xử lý được các phần động như login, search, register.... mỗi lần trình duyệt thay đổi thì nó mới gọi đên controller tương ứng
Còn các mục như menu, sidebar thì ở controller nào nó đều hiển thì. Vậy theo các pro có kinh nghiệm rùi thì xử lý các mục tĩnh này thế nào để nó chạy ổn mà vẫn theo mvc and oop ạ.
Rất mong được chỉ giáo. Thanks all.
+ Trong đó:
- Thư mục controllers , models, views chứa các controller, model và view tương ứng,
các controller và model này thừa kế từ controller cha trong mục libs bên dưới.
- Libs chứa các file điều hướng controller bootstrap.php class dựng sẵn như session, cache, controler cha, model và view cha.
+ Cách hoạt động : file .htaccess rewrite lại url để dữ liệu đổ về file index, index autoload các file trong libs và khởi tạo lớp bootstrap().
Ví đụ khí ta đánh vào http://localhost/vmc/login thì bootstrap sẽ gọi controller login->model->view tương ứng. Đại loại là vậy, em giải thích hơi củ chuối nhưng các pro cũng chẳng lạ gì kiểu này.
Có điều e thắc mắc là. Hoạt động như cách trên thì ta chỉ xử lý được các phần động như login, search, register.... mỗi lần trình duyệt thay đổi thì nó mới gọi đên controller tương ứng
Còn các mục như menu, sidebar thì ở controller nào nó đều hiển thì. Vậy theo các pro có kinh nghiệm rùi thì xử lý các mục tĩnh này thế nào để nó chạy ổn mà vẫn theo mvc and oop ạ.
Rất mong được chỉ giáo. Thanks all.
Bài liên quan
Mỗi block được viết theo Model-View
Chỗ nào cần hiển thị thì bác chỉ cần include file / gọi 1 hàm / chạy 1 command chỗ đó
Bạn có thể đọc kỹ hơn trong tài liệu mô tả kỹ thuật của Magento hoặc Joomla, cả wordpress widget cũng có tác dụng tương tự.
@chủ topic, bạn có thể dùng 2 cách:
1. Áp dụng mô hình HMVC ( HMVC là MVC của những MVC)
2. Cần hiện chỗ nào thì $this->load->view('abc'); chỗ ấy.
Theo pro thì em bỏ qua controller của các mục này mà chỉ cần làm model rồi bên view include rội gọi lớp tương ứng ạ.
1. Nếu áp dụng theo HMVC thì ta đí xây dựng các module con, và trong các mô dul ccon này có controller, model và vew riêng biệt ạ ? Nếu vậy thì controller và model cha trong libs có sử dụng nữa không ạ ?
2. Nếu gọi đén view tương ứng thì cái này sẽ gọi ở contrller nà hả bác. Vì controller các mục này sẽ không được gọi trực tiếp qua bootstrap được ạ ?
Gần như mỗi framework đều tìm cách giải quyết vấn đề này một cách "hợp lý" nhất có thể.
Còn ngược lại bạn hãy sáng tạo 1 mô hình MVC mà bạn có thể kiểm soát tốt nhât.
Thật ra Model->View->Control là định nghĩa khái niệm mà thôi, thật ra mỗi lập trình viên khi bước đầu lập trình đều đã viết code theo MVC rồi.
- Nhận yêu cầu từ người dùng thông qua GET, POST.
- Kiểm tra, truy vấn và lấy dữ liệu từ Database
- Trả về cho người dùng cái họ đã yêu cầu.
Hehehe, chỉ có điều là thay vì tách ra thì chúng ta gồm chung vô 1 hàm hoặc 1 tập tin mà thôi.
1. Không cho load database vào controller
2. Sử dụng cache module
3. sử dụng cache query, nhưng về bản chất thì cache query vẫn phải connect database để có thể cập nhật dữ liệu theo thời gian quy định mà code bạn viết