Chào mọi người,
Lâu lắm rồi mới quay lại viết blog cho laravel :D, chả biết viết gì luôn :v
Hôm nay mình sẽ chia sẻ với các bạn model hmvc và cách xây dựng hmvc trên laravel 5.
1/hmvc là gì?
hmvc là tên viết tắt của hierarchical model-view-controller, đây là một cải tiến của các mô hình MVC trở lên.
Những ưu điểm chính mà hmvc mang lại cho tôi là:
- Mô đun hóa.
- Tổ chức.
- Khả năng tái sử dụng.
- Khả năng mở rộng.
- Mvc cơ bản
- Mô-đun 1 – mvc
- Mô-đun 2 – mvc
- …
- Mô-đun n – mvc
- Ứng dụng (mvc cơ sở)
- Ứng dụng/Mô-đun (Mô-đun mvc)
- module
- configs: sẽ chứa các tệp cấu hình (định dạng trong laravel).
- Controller: Chứa các class controller.
- language: chứa các tệp ngôn ngữ laravel (được bản địa hóa), theo định dạng của laravel.
- Thư viện: Chứa các thư viện lớp.
- migrations: Chứa các di chuyển lược đồ, theo định dạng laravel.
- models: Chứa các mô hình được sử dụng trong mô-đun này.
- views: Chứa các lượt xem tập tin.
- routes.php: các tuyến được sử dụng trong mô-đun này
- Xem
- Trang chủ
- index.blade.php
- abc.blade.php
- …
đại loại như thế
Vậy là xong, chúng ta đã có các module cơ bản của project rồi 😀
3/ bộ tải laravel
3.1/Đang tải chế độ xem
Để tải chế độ xem, chúng ta cần sử dụng bí danh để laravel hiểu được mô-đun của chúng ta. Theo các bước khởi động ở trên serviceprovider, alias module sẽ là tên thư mục của module. Bạn sẽ tải chế độ xem như sau:
3.2/Nạp văn bản dịch (văn bản ngôn ngữ)
Chúng tôi cũng nhận được nó bằng bí danh, như thế này:
3.3/Tải cấu hình
config, hơi đặc biệt một chút, để tạo config cho module thì bạn cần:
- Tạo tệp cấu hình trong app/modules//configs. Thực hiện theo các tiêu chuẩn của laravel.
- Mở file hmvcserviceprovider.php, bạn sẽ thấy thuộc tính là $configfile.
- Đăng ký tệp cấu hình của bạn như sau: (config_alias => config_file_location)
Để lấy các mục cấu hình, chúng ta sẽ sử dụng chức năng cấu hình như bình thường:
4/Di chuyển
Đối với quá trình di chuyển, khi chúng ta sử dụng lệnh php artisan migration, quy trình của nó sẽ chạy như sau:
- di chuyển cơ sở/lõi (trong cơ sở dữ liệu/di chuyển)
- Thông qua từng mô-đun:
- Mô-đun 1
- Mô-đun 2
- …
Tạo di chuyển
Chỉ cần tạo nó trong thư mục di chuyển bên trong thư mục mô-đun.
Lưu ý: Tên file + tên class theo sau migration của laravel, nếu không sẽ không hiểu.
Kết luận 5/hmvc cho laravel 5
Qua bài viết này có lẽ các bạn đã hiểu hơn về cách xây dựng hmvc cho laravel 5.
Tuy nhiên, mình cũng có một tiết lộ nhỏ, đây là hmvc chưa thực sự hoàn chỉnh cho laravel 5, mà chúng ta sử dụng module hóa của hmvc để áp dụng và module hóa cho laravel 5. Nhưng bản chất của laravel là nó không thể xây dựng đầy đủ hmvc.
Nhưng nó vẫn mang lại cho chúng ta khá nhiều lợi thế, đặc biệt là đối với các dự án lớn😀
Để biết mã tham chiếu, vui lòng truy cập liên kết github của tôi ở trên, hoàn thành mã mẫu
Cảm ơn đã xem!
# hmvc cho ấu trùng 5
# Xây dựng mô hình hmvc cho laravel 5
- Trang chủ
Thoạt nhìn thì có vẻ hoàn chỉnh phải không? :d. Thứ duy nhất còn thiếu là chức năng trợ giúp, nhưng có lẽ nó không tệ
2.3/ Tạo dịch vụ cung cấp để bắt đầu hmvc
Tạo một lớp gọi là hmvcserviceprovider trong ứng dụng/mô-đun mở rộng serviceprovider.
Lớp này sẽ hỗ trợ chúng ta khởi động hmvc thông qua phương thức boot:
Save file lại, mở file config/app.php, tại providers, chúng ta khai báo lớp này ở cuối mảng, và đi 😀
2.4/ Khởi tạo module đầu tiên: home
Sau khi đã hình dung sơ bộ về cấu trúc, chúng ta hãy tiếp tục 😀
Tạo thư mục ứng dụng/mô-đun.
Tiếp theo, tạo thư mục home (tên mô-đun) trong ứng dụng/mô-đun..
Tuỳ theo nhu cầu mà chúng ta sẽ tạo các thư mục cần thiết (bộ điều khiển, dạng xem…) trong thư mục chính theo ý mình.
2.5/ Khai báo định tuyến (tùy chọn)
Nếu bạn sử dụng định tuyến và tạo tệp routes.php, hãy khai báo các tuyến của bạn như sau (giống như web.php):
Khi định tuyến cho mô-đun, nên đặt một số quy tắc nhất định. Ví dụ: tôi nghĩ mô-đun nhà luôn bắt đầu bằng /home nên tôi cũng nhóm nó p>
Nếu mô-đun của bạn không cần định tuyến, bạn có thể bỏ qua bước này😀
2.6/ Tạo các tệp cần thiết để gán
Cụ thể ở đây mình cần 1 controller, 1 view, 1 model là có thể tiến hành tạo bình thường.
Với controller và model chúng ta vẫn tạo bình thường. Sử dụng bộ điều khiển, mở rộng lại bộ điều khiển trong apphttp. Còn mô hình nếu dùng hùng hồn thì kéo dài mô hình bình thường.
Còn riêng về view thì mình sẽ tạo thêm một thư mục để chúng ta quản lý view, và đặt tên folder theo controller như sau (ví dụ mình có controller home):
Vậy theo thư mục mình sẽ chia như sau:
Sau bước đầu tiên, chúng ta chuyển sang bước tiếp theo.
2.2/ Cấu trúc mô-đun cấu hình mvc
Không chỉ mvc, chúng ta cũng cần có những thứ cần thiết để hỗ trợ cho việc code thuận tiện, nên bạn nào có thì bổ sung nhé 😀
Trong mô-đun mvc, nó trông như thế này:
Biểu đồ để dễ hình dung:
Nếu chúng ta search với từ khóa hmvc thì hầu hết kết quả sẽ là trên codeigniter vì nó đơn giản.
Tuy nhiên cách áp dụng hmvc cho laravel 5 của chúng ta cũng đơn giản không kém, chuyển sang phần tiếp theo nhé 😀
2/ áp dụng hmvc cho laravel 5
Đầu tiên nó được chia thành nhiều phần, sau đó tôi làm một ví dụ về dự án như sau: https://github.com/sethsandaru/laravel-hmvc-sample
Mã tham chiếu, bạn có thể sao chép repo trên vào
Về cơ bản, tôi đã có thể đạt được những gì mình muốn (hmvc) bằng cách sử dụng gói phát triển của laravel.
2.1/ Cấu trúc dự án cấu hình
Đối với hmvc chúng ta sẽ luôn có một cơ sở mvc, từ đó chúng ta sẽ dần dần đi xuống các mô-đun mvc (mô-đun con) như sau: