Membuat Modules HMVC pada Laravel - CRUDPRO

Membuat Modules HMVC pada Laravel

Membuat Modules HMVC pada Laravel

Model Hierarki–Tampilan–Pengontrol (HMVC)

Membuat Modules HMVC pada Laravel

Manfaat praktis terbesar menggunakan arsitektur HMVC adalah "widgetisasi" struktur konten.[3] Contohnya mungkin komentar, peringkat, tampilan umpan RSS Twitter atau blog, atau tampilan isi keranjang belanja untuk situs web e-niaga. Ini pada dasarnya adalah bagian dari konten yang perlu ditampilkan di beberapa halaman, dan bahkan mungkin di tempat yang berbeda, tergantung pada konteks permintaan HTTP utama.

Apa itu Manajemen Modul di Laravel?
Membuat Modules HMVC pada Laravel

Bayangkan Anda sedang mengerjakan aplikasi berskala lebih besar di mana Anda harus mengelola banyak fitur. Anda mengelola banyak klien dan klien Anda mungkin memiliki persyaratan yang berbeda.

Akan sulit untuk menulis kode khusus untuk setiap klien daripada Anda dapat membuat berbagai jenis modul dan mengaktifkan modul ini hanya untuk klien yang diperlukan. Dengan begitu Anda tidak perlu khawatir menulis kode khusus.

Keuntungan besar lainnya menggunakan pendekatan modular adalah ia hadir dengan struktur folder, fitur Anda diatur dalam struktur direktori yang bagus seperti di bawah ini:

app/
bootstrap/
vendor/
Modules/
  ├── Blog/
      ├── Assets/
      ├── Config/
      ├── Console/
      ├── Database/
          ├── Migrations/
          ├── Seeders/
      ├── Entities/
      ├── Http/
          ├── Controllers/
          ├── Middleware/
          ├── Requests/
      ├── Providers/
          ├── BlogServiceProvider.php
          ├── RouteServiceProvider.php
      ├── Resources/
          ├── assets/
              ├── js/
                ├── app.js
              ├── sass/
                ├── app.scss
          ├── lang/
          ├── views/
      ├── Routes/
          ├── api.php
          ├── web.php
      ├── Repositories/
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── package.json
      ├── webpack.mix.js
Bagaimana kita akan menggunakannya?

nwidart/laravel-modules adalah paket Laravel yang dibuat untuk mengelola aplikasi Laravel besar Anda menggunakan modul. Modul seperti paket Laravel, ia memiliki beberapa tampilan, pengontrol, atau model. Paket ini didukung dan diuji di Laravel 9.

Install
Membuat Modules HMVC pada Laravel
Komposer

Untuk menginstal melalui Composer, dengan menjalankan perintah berikut:

composer require nwidart/laravel-modules

Paket akan secara otomatis mendaftarkan penyedia layanan dan alias.

Secara opsional, publikasikan konfigurasi paket dan publikasikan stub dengan menjalankan:

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

Untuk mempublikasikan hanya konfigurasi:

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

Untuk mempublikasikan hanya rintisan

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider" --tag="stubs"
Pemuatan otomatis

Secara default kelas modul tidak dimuat secara otomatis. Anda dapat memuat modul secara otomatis menggunakan psr-4. Sebagai contoh :

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
    }
  }
}
Tip: jangan lupa untuk menjalankan composer dump-autoload setelahnya
Lumen
Membuat Modules HMVC pada Laravel

Lumen tidak datang dengan penerbit vendor. Untuk menggunakan modul laravel dengan lumen, Anda harus mengaturnya secara manual.

Buat folder config di dalam direktori root dan salin vendor/nwidart/laravel-modules/config/config.php ke folder bernama modules.php

mkdir config
cp vendor/nwidart/laravel-modules/config/config.php config/modules.php

Kemudian muat konfigurasi dan penyedia layanan di bootstrap/app.php

$app->configure('modules');
$app->register(\Nwidart\Modules\LumenModulesServiceProvider::class)

Laravel-modul menggunakan path.public yang tidak didefinisikan secara default di Lumen. Daftarkan path.public sebelum memuat penyedia layanan.

$app->bind('path.public', function() {
 return __DIR__ . 'public/';
});
Membuat modul
Membuat Modules HMVC pada Laravel

Untuk membuat modul gunakan perintah artisan php artisan module:make ModuleName untuk membuat modul bernama Posts:

php artisan module:make posts

Ini akan membuat modul di jalur Modules/Posts

Anda dapat membuat beberapa modul dalam satu perintah dengan menentukan nama secara terpisah:

php artisan module:make customers contacts users invoices quotes

Yang akan membuat setiap modul.

Bendera

Secara default saat Anda membuat modul baru, perintah tersebut akan menambahkan beberapa sumber daya seperti pengontrol, kelas benih, penyedia layanan, dll. secara otomatis. Jika Anda tidak menginginkan ini, Anda dapat menambahkan --plain flag, untuk menghasilkan modul biasa.

php artisan module:make Blog --plain

atau

php artisan module:make Blog -p

Bendera tambahan adalah sebagai berikut:

Buat modul api.

php artisan module:make Blog --api

Jangan aktifkan modul saat pembuatan.

php artisan module:make Blog --disabled

atau

php artisan module:make Blog -d
Konvensi penamaan

Karena kami memuat modul secara otomatis menggunakan psr-4, kami sangat menyarankan menggunakan konvensi StudlyCase.

Struktur folder
Modules/
  ├── Blog/
      ├── Config/
      ├── Console/
      ├── Database/
          ├── factories/
          ├── Migrations/
          ├── Seeders/
      ├── Entities/
      ├── Http/
          ├── Controllers/
          ├── Middleware/
          ├── Requests/
      ├── Providers/
          ├── PostsServiceProvider.php
          ├── RouteServiceProvider.php
      ├── Resources/
          ├── assets/
          ├── lang/
          ├── views/
      ├── Routes/
          ├── api.php
          ├── web.php
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── package.json
      ├── webpack.mix.js
Komposer.json

Setiap modul memiliki file composer.json sendiri, ini menetapkan nama modul, deskripsi, dan penulisnya. Anda biasanya hanya perlu mengubah file ini jika Anda perlu mengubah nama vendor atau memiliki dependensi komposernya sendiri.

Misalnya, Anda ingin menginstal paket ke modul ini:

"require": {
    "dcblogdev/laravel-box": "^2.0"
}

Ini akan membutuhkan paket untuk modul ini, tetapi tidak akan dimuat untuk file utama Laravel composer.json. Untuk itu Anda harus meletakkan ketergantungan pada file composer.json Laravel. Alasan utama ini ada adalah ketika mengekstrak modul ke paket.

Module.json

File ini merinci nama alias dan deskripsi/opsi:

{
    "name": "Blog",
    "alias": "blog",
    "description": "",
    "keywords": [],
    "priority": 0,
    "providers": [
        "Modules\\Blog\\Providers\\BlogServiceProvider"
    ],
    "aliases": {},
    "files": [],
    "requires": []
}

Modul dimuat dalam urutan prioritas, ubah nomor prioritas agar modul di-boot / diunggulkan dalam urutan khusus.

Opsi file dapat digunakan untuk memasukkan file:

"files": [
  "start.php"
]
Ruang nama khusus
Membuat Modules HMVC pada Laravel

Saat Anda membuat modul baru, modul tersebut juga mendaftarkan namespace kustom baru untuk Lang, View, dan Config. Misalnya, jika Anda membuat modul baru bernama blog, itu juga akan mendaftarkan blog namespace/hint baru untuk modul tersebut. Kemudian, Anda dapat menggunakan namespace tersebut untuk memanggil Lang, View, atau Config. Berikut ini adalah beberapa contoh penggunaannya:

Memanggil Lang:

Lang::get('blog::group.name');@trans('blog::group.name');

Tampilan Panggilan:

view('blog::index')view('blog::partials.sidebar')

Konfigurasi Panggilan:

Config::get('blog.name')
Konfigurasi
Membuat Modules HMVC pada Laravel

Anda dapat mempublikasikan konfigurasi paket menggunakan perintah berikut:

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

Dalam file konfigurasi yang diterbitkan, Anda dapat mengonfigurasi hal-hal berikut:

Ruang nama default

Apa namespace default saat membuat modul.

Default: Modul

Namespace default ditetapkan sebagai Modules. Ini akan menerapkan namespace untuk semua kelas yang akan digunakan modul saat dibuat dan nanti saat membuat kelas tambahan.

Timpa file yang dihasilkan (stub)

Timpa stub yang dihasilkan secara default untuk digunakan saat membuat modul. Ini dapat berguna untuk menyesuaikan output dari file yang berbeda.

Rintisan ini mengatur opsi dan jalur.

Diaktifkan benar atau salah akan mengaktifkan atau menonaktifkan modul saat dibuat, defaultnya adalah salah artinya Anda harus mengaktifkan modul secara manual.

Untuk mengaktifkan modul edit module_statuses.json atau jalankan perintah:

php artisan module:enable ModuleName
perhatikan file module_statues.json akan dibuat jika tidak ada menggunakan perintah ini.

Isi module_statuses.json terlihat seperti:

{
    "Users": true
}
Di atas akan terjadi ketika ada satu modul yang disebut Pengguna dan diaktifkan.

Jalur menunjuk ke vendor secara langsung di mana rintisan default berada, ini dapat dipublikasikan dan dimodifikasi.

File mengatur default lokasi file.

Penggantian adalah cara untuk melakukan Cari dan Ganti pada generasi apa pun yang cocok akan diganti.

'stubs' => [
    'enabled' => false,
    'path' => base_path() . '/vendor/nwidart/laravel-modules/src/Commands/stubs',
    'files' => [
        'routes/web' => 'Routes/web.php',
        'routes/api' => 'Routes/api.php',
        'views/index' => 'Resources/views/index.blade.php',
        'views/master' => 'Resources/views/layouts/master.blade.php',
        'scaffold/config' => 'Config/config.php',
        'composer' => 'composer.json',
        'assets/js/app' => 'Resources/assets/js/app.js',
        'assets/sass/app' => 'Resources/assets/sass/app.scss',
        'webpack' => 'webpack.mix.js',
        'package' => 'package.json',
    ],
    'replacements' => [
        'routes/web' => ['LOWER_NAME', 'STUDLY_NAME'],
        'routes/api' => ['LOWER_NAME'],
        'webpack' => ['LOWER_NAME'],
        'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE'],
        'views/index' => ['LOWER_NAME'],
        'views/master' => ['LOWER_NAME', 'STUDLY_NAME'],
        'scaffold/config' => ['STUDLY_NAME'],
        'composer' => [
            'LOWER_NAME',
            'STUDLY_NAME',
            'VENDOR',
            'AUTHOR_NAME',
            'AUTHOR_EMAIL',
            'MODULE_NAMESPACE',
            'PROVIDER_NAMESPACE',
        ],
    ],
    'gitkeep' => true,
],
Jalur Generator

Secara default, ini adalah file yang dihasilkan secara default di mana generate disetel ke true, ketika false digunakan, jalur tersebut tidak dibuat.

Tidak suka Entitas untuk Model, di sini Anda dapat mengubah jalur ke Model.

'generator' => [
    'config' => ['path' => 'Config', 'generate' => true],
    'command' => ['path' => 'Console', 'generate' => true],
    'migration' => ['path' => 'Database/Migrations', 'generate' => true],
    'seeder' => ['path' => 'Database/Seeders', 'generate' => true],
    'factory' => ['path' => 'Database/factories', 'generate' => true],
    'model' => ['path' => 'Entities', 'generate' => true],
    'routes' => ['path' => 'Routes', 'generate' => true],
    'controller' => ['path' => 'Http/Controllers', 'generate' => true],
    'filter' => ['path' => 'Http/Middleware', 'generate' => true],
    'request' => ['path' => 'Http/Requests', 'generate' => true],
    'provider' => ['path' => 'Providers', 'generate' => true],
    'assets' => ['path' => 'Resources/assets', 'generate' => true],
    'lang' => ['path' => 'Resources/lang', 'generate' => true],
    'views' => ['path' => 'Resources/views', 'generate' => true],
    'test' => ['path' => 'Tests/Unit', 'generate' => true],
    'test-feature' => ['path' => 'Tests/Feature', 'generate' => true],
    'repository' => ['path' => 'Repositories', 'generate' => false],
    'event' => ['path' => 'Events', 'generate' => false],
    'listener' => ['path' => 'Listeners', 'generate' => false],
    'policies' => ['path' => 'Policies', 'generate' => false],
    'rules' => ['path' => 'Rules', 'generate' => false],
    'jobs' => ['path' => 'Jobs', 'generate' => false],
    'emails' => ['path' => 'Emails', 'generate' => false],
    'notifications' => ['path' => 'Notifications', 'generate' => false],
    'resource' => ['path' => 'Transformers', 'generate' => false],
    'component-view' => ['path' => 'Resources/views/components', 'generate' => false],
    'component-class' => ['path' => 'View/Component', 'generate' => false],
]
Perintah Paket

Perintah yang dapat Anda jalankan ditentukan dari daftar ini. Perintah apa pun yang tidak ingin Anda gunakan dapat dikomentari / dihapus dari daftar ini dan tidak akan tersedia saat menjalankan php artisan.

'commands' => [
    Commands\CommandMakeCommand::class,
    Commands\ComponentClassMakeCommand::class,
    Commands\ComponentViewMakeCommand::class,
    Commands\ControllerMakeCommand::class,
    Commands\DisableCommand::class,
    Commands\DumpCommand::class,
    Commands\EnableCommand::class,
    Commands\EventMakeCommand::class,
    Commands\JobMakeCommand::class,
    Commands\ListenerMakeCommand::class,
    Commands\MailMakeCommand::class,
    Commands\MiddlewareMakeCommand::class,
    Commands\NotificationMakeCommand::class,
    Commands\ProviderMakeCommand::class,
    Commands\RouteProviderMakeCommand::class,
    Commands\InstallCommand::class,
    Commands\ListCommand::class,
    Commands\ModuleDeleteCommand::class,
    Commands\ModuleMakeCommand::class,
    Commands\FactoryMakeCommand::class,
    Commands\PolicyMakeCommand::class,
    Commands\RequestMakeCommand::class,
    Commands\RuleMakeCommand::class,
    Commands\MigrateCommand::class,
    Commands\MigrateRefreshCommand::class,
    Commands\MigrateResetCommand::class,
    Commands\MigrateRollbackCommand::class,
    Commands\MigrateStatusCommand::class,
    Commands\MigrationMakeCommand::class,
    Commands\ModelMakeCommand::class,
    Commands\PublishCommand::class,
    Commands\PublishConfigurationCommand::class,
    Commands\PublishMigrationCommand::class,
    Commands\PublishTranslationCommand::class,
    Commands\SeedCommand::class,
    Commands\SeedMakeCommand::class,
    Commands\SetupCommand::class,
    Commands\UnUseCommand::class,
    Commands\UpdateCommand::class,
    Commands\UseCommand::class,
    Commands\ResourceMakeCommand::class,
    Commands\TestMakeCommand::class,
    Commands\LaravelModulesV6Migrator::class,
    Commands\ComponentClassMakeCommand::class,
    Commands\ComponentViewMakeCommand::class,
],
Timpa jalur

Timpa jalur default yang digunakan di seluruh paket.

Tetapkan jalur untuk menempatkan folder Modul, tempat aset akan diterbitkan, dan lokasi migrasi.

Disarankan untuk tetap menggunakan default di sini.
'paths' => [
    'modules' => base_path('Modules'),
    'assets' => public_path('modules'),
    'migration' => base_path('database/migrations'),
Pindai folder tambahan untuk modul

Secara default, modul dimuat dari direktori yang disebut Modul, selain jalur pemindaian. Paket apa pun yang diinstal untuk modul dapat dimuat dari sini.

'scan' => [
    'enabled' => false,
    'paths' => [
        base_path('vendor/*/*'),
    ],
],

Anda dapat menambahkan lokasi Anda sendiri, misalnya, Anda sedang membangun aplikasi besar dan ingin memiliki beberapa lokasi folder modul, Anda dapat membuat sebanyak yang diperlukan.

'scan' => [
    'enabled' => true,
    'paths' => [
        base_path('ModulesCms'),
        base_path('ModulesERP'),
        base_path('ModulesShop'),
    ],
],

Ingatlah untuk menyetel diaktifkan terlalu benar untuk mengaktifkan lokasi ini.

Templat file komposer

Saat membuat modul, file composer.json akan berisi detail penulis seperti yang ditetapkan di bawah ini, ubah sesuai kebutuhan.

Perhatikan vendor secara khusus, jika Anda berencana mengekstrak modul ke paket nanti, sebaiknya gunakan nama vendor BitBucket/GitHub/GitLab Anda di sini.

'composer' => [
    'vendor' => 'nwidart',
    'author' => [
        'name' => 'Nicolas Widart',
        'email' => '[email protected]',
    ],
]
Caching

Jika Anda memiliki banyak modul, sebaiknya simpan informasi ini dalam cache (seperti beberapa file module.json misalnya).

Modul dapat di-cache, secara default caching dimatikan.

'cache' => [
    'enabled' => false,
    'key' => 'laravel-modules',
    'lifetime' => 60,
],
Mendaftarkan ruang nama khusus

Putuskan ruang nama khusus mana yang perlu didaftarkan oleh paket. Jika salah satu disetel ke false, paket tidak akan menangani pendaftarannya.

Pembantu
Fungsi jalur modul

Dapatkan jalur ke modul yang diberikan.

$path = module_path('Blog');

Mengembalikan jalur absolut proyek yang diakhiri dengan /Modules/Blog

module_path dapat mengambil string sebagai param kedua, yang menempel di ujung jalur:

$path = module_path('Blog', 'Http/controllers/BlogController.php');

Mengembalikan jalur absolut proyek yang diakhiri dengan /Modules/Blog/Http/controllers/BlogController.php

Kompilasi Aset (Laravel Mix)
Membuat Modules HMVC pada Laravel
Instalasi & Pengaturan

Saat Anda membuat modul baru, modul ini juga membuat aset untuk CSS/JS dan file konfigurasi webpack.mix.js.

php artisan module:make Blog

Ubah direktori ke modul:

cd Modules/Blog

File package.json default mencakup semua yang Anda butuhkan untuk memulai. Anda dapat menginstal dependensi yang dirujuknya dengan menjalankan:

npm install
campuran lari

Mix adalah lapisan konfigurasi di atas Webpack, jadi untuk menjalankan tugas Mix Anda hanya perlu menjalankan salah satu skrip NPM yang disertakan dengan file default laravel-modules package.json

// Run all Mix tasks...
npm run dev// Run all Mix tasks and minify output...
npm run production

Setelah membuat file berversi, Anda tidak akan tahu nama file yang tepat. Jadi, Anda harus menggunakan fungsi campuran global Laravel dalam tampilan Anda untuk memuat aset hash yang sesuai. Fungsi campuran akan secara otomatis menentukan nama file hash saat ini:

// Modules/Blog/Resources/views/layouts/master.blade.php<link rel="stylesheet" href="{{ mix('css/blog.css') }}"><script src="{{ mix('js/blog.js') }}"></script>

Untuk info lebih lanjut tentang Laravel Mix lihat dokumentasinya di sini: https://laravel.com/docs/mix

Catatan: untuk mencegah konfigurasi Laravel Mix utama menimpa file public/mix-manifest.json:

Instal laravel-mix-merge-manifest

npm install laravel-mix-merge-manifest --save-dev

Ubah file utama webpack.mix.js

let mix = require('laravel-mix');
/* Allow multiple Laravel Mix applications*/
require('laravel-mix-merge-manifest');
mix.mergeManifest();
/*----------------------------------------*/mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');
Perintah artisan
Membuat Modules HMVC pada Laravel
Tips Berguna:
Anda dapat menggunakan perintah berikut dengan akhiran --help untuk menemukan argumen dan opsinya.

Perhatikan semua perintah berikut menggunakan "Blog" sebagai contoh nama modul, dan contoh nama kelas/file

Perintah utilitas
modul: membuat

Buat modul baru.

php artisan module:make Blog
modul: membuat

Hasilkan beberapa modul sekaligus.

php artisan module:make Blog User Auth
modul: gunakan

Gunakan modul yang diberikan. Ini memungkinkan Anda untuk tidak menentukan nama modul pada perintah lain yang memerlukan nama modul sebagai argumen.

modul artisan php: gunakan Blog
modul: tidak digunakan

Ini menghapus modul yang ditentukan yang disetel dengan perintah module:use.

php artisan module:unuse
modul: daftar

Daftar semua modul yang tersedia.

php artisan module:list
modul: migrasi

Migrasikan modul yang diberikan, atau tanpa modul argumen, migrasikan semua modul.

php artisan module:migrate Blog
modul:migrasi-kembalikan

Kembalikan modul yang diberikan, atau tanpa argumen, kembalikan semua modul.

php artisan module:migrate-rollback Blog
modul: migrasi-refresh

Segarkan migrasi untuk modul yang diberikan, atau tanpa modul tertentu, segarkan semua migrasi modul.

php artisan module:migrate-refresh Blog
modul:migrasi-reset Blog

Setel ulang migrasi untuk modul yang diberikan, atau tanpa modul yang ditentukan, setel ulang semua migrasi modul.

php artisan module:migrate-reset Blog
modul: benih

Seed modul yang diberikan, atau tanpa argumen, seed semua modul

php artisan module:seed Blog
modul:publikasikan-migrasi

Publikasikan file migrasi untuk modul yang diberikan, atau tanpa argumen publikasikan semua migrasi modul.

php artisan module:publish-migration Blog
modul:publish-config

Publikasikan file konfigurasi modul yang diberikan, atau tanpa argumen publikasikan semua file konfigurasi modul.

php artisan module:publish-config Blog
modul:terbitkan-terjemahan

Publikasikan file terjemahan untuk modul yang diberikan, atau tanpa modul tertentu, publikasikan semua migrasi modul.

php artisan module:publish-translation Blog
modul: aktifkan

Aktifkan modul yang diberikan

php artisan module:enable Blog
modul: nonaktifkan

Nonaktifkan modul yang diberikan.

php artisan module:disable Blog
modul: pembaruan

Perbarui modul yang diberikan.

modul artisan php: perbarui Blog

Perintah generator
modul: make-command

Hasilkan perintah konsol yang diberikan untuk modul yang ditentukan.

php artisan module:make-command CreatePostCommand Blog
modul: buat-migrasi

Hasilkan migrasi untuk modul tertentu.

php artisan module:make-migration create_posts_table Blog
modul: make-seed

Hasilkan nama benih yang diberikan untuk modul yang ditentukan.

php artisan module:make-seed seed_fake_blog_posts Blog
modul: make-controller

Hasilkan pengontrol untuk modul yang ditentukan.

php artisan module:make-controller PostsController Blog
Opsi opsional:
  • --plain,-p : buat pengontrol biasa
  • --api : membuat pengontrol sumber daya
modul: make-model

Hasilkan model yang diberikan untuk modul yang ditentukan.

php artisan module:make-model Post Blog

Opsi opsional:

  • fillable=field1,field2: mengatur bidang yang bisa diisi pada model yang dihasilkan
  • migration, -m: buat file migrasi untuk model yang diberikan
modul: make-provider

Hasilkan nama penyedia layanan yang diberikan untuk modul yang ditentukan.

php artisan module:make-provider BlogServiceProvider Blog
modul: make-middleware

Hasilkan nama middleware yang diberikan untuk modul yang ditentukan.

php artisan module:make-middleware CanReadPostsMiddleware Blog
modul: make-mail

Hasilkan kelas email yang diberikan untuk modul yang ditentukan.

php artisan module:make-mail SendWeeklyPostsEmail Blog
modul: buat-notifikasi

Hasilkan nama kelas notifikasi yang diberikan untuk modul yang ditentukan.

php artisan module:make-notification NotifyAdminOfNewComment Blog
modul:membuat-pendengar

Hasilkan pendengar yang diberikan untuk modul yang ditentukan. Secara opsional, Anda dapat menentukan kelas acara mana yang harus didengarkan. Itu juga menerima --queued flag yang memungkinkan pendengar acara yang antri.

php artisan module:make-listener NotifyUsersOfANewPost Blog
php artisan module:make-listener NotifyUsersOfANewPost Blog --event=PostWasCreated
php artisan module:make-listener NotifyUsersOfANewPost Blog --event=PostWasCreated --queued
modul: buat-permintaan

Hasilkan permintaan yang diberikan untuk modul yang ditentukan.

php artisan module:make-request CreatePostRequest Blog
modul:make-event

Hasilkan acara yang diberikan untuk modul yang ditentukan.

php artisan module:make-event BlogPostWasUpdated Blog
modul: membuat-pekerjaan

Hasilkan pekerjaan yang diberikan untuk modul yang ditentukan.

php artisan module:make-job JobName Blogphp artisan module:make-job JobName Blog --sync # A synchronous job class
modul: penyedia rute

Hasilkan penyedia layanan rute yang diberikan untuk modul yang ditentukan.

modul artisan php: Blog penyedia rute
modul: membuat-pabrik

Hasilkan pabrik basis data yang diberikan untuk modul yang ditentukan.

php artisan module:make-factory ModelName Blog
modul: buat-kebijakan

Hasilkan kelas kebijakan yang diberikan untuk modul yang ditentukan.

Kebijakan tidak dibuat secara default saat membuat modul baru. Ubah nilai paths.generator.policies di modules.php ke lokasi yang Anda inginkan.

php artisan module:make-policy PolicyName Blog
modul: buat-aturan

Hasilkan kelas aturan validasi yang diberikan untuk modul yang ditentukan.

Folder Aturan tidak dibuat secara default saat membuat modul baru. Ubah nilai paths.generator.rules di modules.php ke lokasi yang Anda inginkan.

php artisan module:make-rule ValidationRule Blog
modul: buat-sumber daya

Hasilkan kelas sumber daya yang diberikan untuk modul yang ditentukan. Itu dapat memiliki argumen --collection opsional untuk menghasilkan koleksi sumber daya.

Folder Transformers tidak dibuat secara default saat membuat modul baru. Ubah nilai paths.generator.resource di modules.php ke lokasi yang Anda inginkan.

php artisan module:make-resource PostResource Blog
php artisan module:make-resource PostResource Blog --collection
modul: buat-tes

Hasilkan kelas tes yang diberikan untuk modul yang ditentukan.

php artisan module:make-test EloquentPostRepositoryTest Blog
Aplikasi Dasar

Sintaks perintah buat modul:

php artisan make:module module_name

Kemudian jalankan perintah berikut untuk membuat modul mari kita lakukan contoh untuk modul Posts.

php artisan make: posting modul

Setelah menjalankan perintah di atas itu akan menghasilkan modul Posts kami di bawah folder Modul. Lihat di bawah struktur modul Laravel:

app/
bootstrap/
vendor/
Modules/
  ├── Posts/
      ├── Assets/
      ├── Config/
      ├── Console/
      ├── Database/
          ├── Migrations/
          ├── Seeders/
      ├── Entities/
      ├── Http/
          ├── Controllers/
          ├── Middleware/
          ├── Requests/
      ├── Providers/
          ├── PostsServiceProvider.php
          ├── RouteServiceProvider.php
      ├── Resources/
          ├── assets/
              ├── js/
                ├── app.js
              ├── sass/
                ├── app.scss
          ├── lang/
          ├── views/
      ├── Routes/
          ├── api.php
          ├── web.php
      ├── Repositories/
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── package.json
      ├── webpack.mix.js

Sekarang, kami berhasil membuat modul Posts kami. Mari kita uji dengan menjalankan perintah di bawah ini:

php artisan serve

Kemudian jalankan URL ke browser Anda:

http://127.0.0.1:8000/posts

Kemudian anda akan melihat hasilnya di bawah ini:

Membuat Modules HMVC pada Laravel