Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  1602 Lượt xem

Tạo Module trong Laravel P2: Module hóa dự án bằng package Laravel-Modules

LaravelPHP

Module trong Laravel là gì

Module trong Laravel là một chức năng được phát triển từ Laravel 5 và được sử dụng để quản lý từng chức năng nhỏ trong các dự án lớn. Tương tự như Package thì mỗi Module trong Laravel cũng có Views, Controller và Models của riêng nó.

Lợi ích của sử dụng Module đó chính là có thể quản lý dự án bằng theo các chức năng nhỏ, như thế trong các dự án lớn cần nhiều team và kỹ sư phát triển, thì mỗi người có thể độc lập phát triển các module nhỏ như vậy, sau đó lắp ráp lại mà không ảnh hưởng tới các phần khác của dự án.

Tạo và quản lý Module trong laravel bằng package

Khi chức năng Module được ra mắt ở Laravel 5, khi đó không có nhiều Package được phát triển để quản lý nó. Bởi vậy các nhà phát triển thường phải tự tạo ra Module theo cách thủ công để sử dụng.

Tuy nhiên theo thời gian thì có nhiều Package xuất hiện, và nổi bật nhất trong số chúng có thể kể đến đó chính là Laravel-Modules.

Ở phần tiếp theo, Kiyoshi sẽ chia sẻ cách sử dụng package Laravel-Modules để quản lý Module trong Laravel nhé.

Laravel-Modules là gì

Laravel-Modules là một package được sử dụng để tạo và quản lý các chức năng của Laravel theo từng Module. Laravel-Modules được kỹ sư Nicolas Widart phát triển, có khả năng support cho tất cả các phiên bản Laravel phiên bản từ 5.4 trở lên.

Laravel-Modules.png

Bạn có thể tìm thấy package này tại link gihub sau: nWidart/laravel-modules.

Doccument có thể tìm thấy tại https://docs.laravelmodules.com/.

Cấu trúc thư mục của Laravel-Modules

Package Laravel-Modules sẽ tự tạo ra thư mục mẹ để quản lý module, cũng như cấu trúc các file và folder cần thiết sử dụng cho từng module một cách tự động. Các công việc này nếu không có Laravel-Modules thì lập trình viên phải tự tạo theo cách thủ công hoàn toàn, như Kiyoshi đã trình bày trong bài Tạo Module trong Laravel P1: cách thủ công.

Cấu trúc thư mục của Laravel-Modules tổng quát như sau:

app/
bootstrap/
vendor/
Modules/
  └── Blog/
      ├── Assets/
      ├── Config/
      ├── Console/
      ├── Database/
      |   ├── Migrations/
      |   └── Seeders/
      ├── Entities/
      ├── Http/
      |   ├── Controllers/
      |   ├── Middleware/
      |   └── Requests/
      ├── Providers/
      |   ├── BlogServiceProvider.php
      |   └── RouteServiceProvider.php
      ├── Resources/
      |   ├── assets/
      |   ├── lang/
      |   └── views/
      ├── Routes/
      ├── Repositories/
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── package.json
      └── webpack.mix.js

Cài đặt Laravel-Modules

Yêu cầu là bạn đã cài composer trong máy của mình. Hãy chạy lệnh dưới để cài Laravel-Modules vào project

composer require nwidart/laravel-modules

Khi đó, composer sẽ tự kiểm tra phiên bản Laravel hiện tại của bạn rồi tải và cài đặt gói Laravel-Modules tương ứng.

Sau đó chạy lệnh sau để khai báo ServiceProvider:

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

Tiếp theo, hãy khai báo Laravel-Modules trong composer.json bằng cách mở file này và thêm dòng code sau vào mục autoload/psr-4 :

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
  }

}

Đừng quên chạy lệnh dump-autoload để nạp lại composer.json vào app.

composer dump-autoload

Tạo Module trong Laravel bằng Laravel-Modules

Để tạo một module mới, hãy chạy lệnh sau đây:

php artisan module:make <module-name>

Ví dụ lệnh tạo module Blog:

php artisan module:make Blog

Khi đó, package sẽ tự tạo ra module Blog tại đường dẫn Modules/Blog, với các thư mục và file theo cấu trúc thư mục ở phần trên.

make-module.png

Bạn cũng có thể tạo đồng thời nhiều module bằng cách viết liên tiếp tên các module cần tạo cách nhau bởi dấu cách:

php artisan module:make Blog Customers Contacts Users Invoices Quotes

Truy cập vào các view trong module

Về mặc định các file view sẽ được chứa trong thư mục Modules\Blog\Resources\views. Để truy cập và sử dụng các view này, chúng ta sử dụng namespace của chúng.

Ví dụ chúng ta có 2 view là index.blade.phplistUser.blade.php như sau:

App/
Modules/
    ├── Blog
    │   ├── Resources
    │   │        ├── views
    │   │             ├── index.blade.php
    │   │             ├── User
    │   │                  └── listUser.blade.php

Chúng ta có thể truy cập tới 2 view này bằng lệnh:

view('blog::index')
view('blog::User.listUser')

Ví dụ như sử dụng chúng trong controler chẳng hạn:

class BlogController extends Controller
{
    public function home()
    {
        if (true) {
            return view('blog::index');
        }else{
            return view('blog::User.listUser');
        }
    }
}

Tổng kết

Trên đây Kiyoshi đã chia sẻ cách Module hóa dự án bằng package Laravel-Modules rồi. Hi vọng nó sẽ có ích cho mọi người.

Bài viết cùng chuyên đề [ Module trong Laravel ]

kiyoshi
Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic