Membuat Modules HMVC pada Laravel
Model Hierarki–Tampilan–Pengontrol (HMVC)
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?
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
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
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
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
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
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)
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
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: