Laravel Modules เป็น package ที่สร้างขึ้น เพื่อจัดการ Laravel application ที่มีขนาดใหญ่ โดยการแบ่งเป็น module ย่อยๆ
วิธีการติดตั้ง
- สั่งติดตั้ง Laravel Modules package
composer require nwidart/laravel-modules
- สร้างไฟล์ config ของ package ใน project
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
วิธีการตั้งค่า
- แก้ไข autoload ใน composer.json
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "modules/"
}
}
}
- รัน command ดังนี้
composer dump-autoload
- แก้ไขไฟล์ config/modules.php
- namespace - ชื่อ namespace เริ่มต้นของ module ที่ถูกสร้าง
- stubs.files - ไฟล์ตั้งต้นเมื่อสร้าง module ใหม่ ใส่
- stubs.gitkeep - สร้าง gitkeep ไว้ภายใน folder ที่ถูกสร้างขึ้นหรือไม่
- paths.modules - path ที่จะสร้าง module
- paths.generators - path ของ folder ที่จะถูกสร้าง เมื่อสร้าง module ใหม่ ตั้งค่า generate เป็น false เมื่อไม่ต้องการให้สร้าง folder
- composer.vendor - ชื่อ vendor ใน composer.json ของ module ที่สร้างใหม่ โดยจะแสดงในรูปแบบ vendor_name/module_name
- composer.author - ชื่อ author ใน composer.json ของ module ที่สร้างใหม่
- ตรวจสอบว่าชื่อ module ที่เพิ่งสร้าง มีอยู่ใน modules_statuses.json และมีสถานะเป็น true
วิธีการใช้งาน
- การสร้าง Module ใหม่
php artisan module:make ActualPersonalCosts
- การตั้ง namespace ของ Class จะเป็นรูปแบบดังนี้
namespace namespace_name\module_name\Http\Controllers;
ยกตัวอย่าง เช่น
namespace Modules\ActualPersonalCosts\Http\Controllers;
- การใช้งาน view จะเป็นรูปแบบดังนี้
view('module_name_in_lower_case::view_name');
ยกตัวอย่าง เช่น
view('actualpersonalcosts::index')
- การ migration
php artisan migrate
- การสร้าง Seeder ให้ใช้คำสั่งดังนี้
php artisan module:make-seed table_to_seed module_name
ยกตัวอย่าง เช่น
php artisan module:make-seed AllocationTypes Allocations
ผลการรันจะเป็นดังนี้
Created : /var/www/modules/Allocations/Database/Seeders/AllocationTypesTableSeeder.php
- การ Seed ข้อมูลจาก Seeder ให้ใช้คำสั่งดังนี้ (ไม่สามารถใช้
php artisan module:seed
ได้)
php artisan db:seed --class=full_seeder_namespace\\seeder_class_name
ยกตัวอย่าง เช่น
php artisan db:seed --class=Modules\\Allocations\\Database\\Seeders\\AllocationTypesTableSeeder
- การสร้าง Console Command
php artisan module:make-command command_class_name module_name
ยกตัวอย่าง เช่น
php artisan module:make-command GenerateMonthlyCostCommand Projects
หลังจากนั้นให้เพิ่ม code ด้านล่างนี้ใน function register ใน Service Provider ของ Module
$this->commands([
\Modules\Projects\Console\GenerateMonthlyCost::class,
]);
อ่านการใช้งานคำสั่งเพิ่มเติมใน
Artisan commands
No comments:
Post a Comment