มาใช้งาน Laravel CRUD Generator ตัวช่วยสร้าง CRUD สำเร็จรูป
Package นี้เป็นตัวช่วยสร้าง CRUD, API, Controller, Model, Migration, View แบบอัตโนมัติด้วยการรันเพียงคำสั่งเดียว เหมาะกับสำหรับสาย Backend ที่นั่งทำแต่ CRUD วันละหลาย ๆ Module หรือสาย Frontend ที่กำลังหาตัวช่วยจบงานหลังบ้านโดยไม่ต้องง้อ Backend บอกได้เลยว่าคุณมาถูกทางแล้วครับ
เริ่มต้นโดยการเปิดโปรเจค Laravel ของบน Teminal (ต้องติดตั้ง Laravel ก่อน การติดตั้ง Laravel 5.6 แบบสมบูรณ์) แล้วโหลด appzcoder/crud-generator มาลงโล้ดด
composer require appzcoder/crud-generator --dev
จากนั้นก็ดึง assets ขึ้นมาใช้งาน
php artisan vendor:publish --provider="Appzcoder\CrudGenerator\CrudGeneratorServiceProvider"
** สำหรับใครที่ใช้ Laravel เวอร์ชั่นต่ำกว่า 5.5 ให้เข้าไปเพิ่ม Provider ในไฟล์ app/Providers/AppServiceProvider.php เองด้วยนะ
public function register()
{
if ($this->app->environment() == 'local') {
$this->app->register('Appzcoder\CrudGenerator\CrudGeneratorServiceProvider');
}
}
เริ่มสร้าง CRUD
ตัวอย่างคำสั่งในการสร้างหน้าจัดการโพสทั้ง สร้างโพส, ดูโพส, แก้ไขโพส, และลบโพส
php artisan crud:generate Posts --fields='title#string; content#text; category#select#options={"technology": "Technology", "tips": "Tips", "health": "Health"}' --view-path=admin --controller-namespace=Admin --route-group=admin --form-helper=html
- หลังจากรันคำสั่งแล้วไฟล์ที่ได้คือ
- Post.php, - - Controllers/Admin/PostController.php,
- - migrations/2018_04_25_153320_create_posts_table.php
- ไฟล์ใน views/admin/posts/ ก็มี
- index.blade.php,
- create.blade.php,
- edit.blade.php,
- form.blade.php,
- show.blade.php - และยังเพิ่ม routes ให้เราด้วย ลองให้คำสั่ง php artisan route:list เพื่อดู routes ทั้งหมดสังเกตุในช่อง Name จะเห็นชื่อ route ที่ขึ้นต้นด้วยคำว่า posts.xxx ถูกสร้างขึ้นมา
ต่อมาทำการ Migrate ฐานข้อมูล ด้วยคำสั่ง
php artisan migrate
พร้อมใช้งาน
สั่งรัน php artisan serve
php artisan serve
ดูผลลัพธ์ที่ Browser เปิดหน้า 127.0.0.1:8000/admin/posts ก็จะเจอหน้า index ของ posts
เมื่อกดปุ่ม Add New ก็เป็น Form สำหรับสร้าง Post
สร้างเสร็จแล้วก็จะมีปุ่ม View, Edit, Delete เพื่อจัดการโพสของเรา
เสร็จแล้วหรอเนี่ยอะไรคือการนั่งทำเป็นวัน ๆ แบบนี้หวานหมูเลยสิ ^^ เอ๊าะ! จะบอกอีกว่าเราสามารถเขียนเป็น json ไฟล์ให้ดูง่าย ๆ แบบนี้ก่อน
{
"fields": [
{
"name": "title",
"type": "string"
},
{
"name": "content",
"type": "text"
},
{
"name": "category",
"type": "select",
"options": {
"technology": "Technology",
"tips": "Tips",
"health": "Health"
}
},
{
"name": "user_id",
"type": "integer#unsigned"
}
],
"foreign_keys": [
{
"column": "user_id",
"references": "id",
"on": "users",
"onDelete": "cascade"
}
],
"relationships": [
{
"name": "user",
"type": "belongsTo",
"class": "App\\User"
}
],
"validations": [
{
"field": "title",
"rules": "required|max:10"
}
]
}
แล้วก็รันด้วยคำสั่งนี้
php artisan crud:generate Posts --fields_from_file="/path/to/fields.json" --view-path=admin --controller-namespace=Admin --route-group=admin --form-helper=html
คำสั่งอื่น ๆ ก็มีนะ
สำหรับ Controller
php artisan crud:controller PostsController --crud-name=posts --model-name=Post --view-path="directory" --route-group=admin
สำหรับ Model
php artisan crud:model Post --fillable="['title', 'body']"
สำหรับ Migration
php artisan crud:migration posts --schema="title#string; body#text"
สำหรับ View
php artisan crud:view posts --fields="title#string; body#text" --view-path="directory" --route-group=admin --form-helper=html
สำหรับ API CRUD
php artisan crud:api Posts --fields='title#string; content#text' --controller-namespace=Api
สำหรับ API Controller
php artisan crud:api-controller Api\\PostsController --crud-name=posts --model-name=Post
การปรับแต่ง Template
ค่าเริ่มต้นจะเป็นการสร้าง CRUD โดยใช้ Template จากไฟล์ Layout/app.blade.php ที่ Laravel ให้มา แต่เราเองสามารถปรับแต่ง Template เองได้ด้วย
เข้าไปที่ไฟล์ config/crudgenerator.php ตรงที่ custom_template ให้ตั้งค่าเป็น true
'custom_template' => true,
หรือเปลี่ยนที่เก็บ Template
'path' => base_path('resources/crud-generator/'),
ของแถมทิ้งท้าย
นี่คือรายชื่อ Fields ที่ใช้งานได้ทั้งหมด
Form Field
- text
- textarea
- password
- number
- date
- datetime
- time
- radio
- select
- file
Migration Field
- string
- char
- varchar
- date
- datetime
- time
- timestamp
- text
- mediumtext
- longtext
- json
- jsonb
- binary
- integer
- bigint
- mediumint
- tinyint
- smallint
- boolean
- decimal
- double
- float
- enum
และการใช้ Options ต่าง ๆ ตามไปดูคู่มือนี้ https://github.com/appzcoder/crud-generator/blob/master/doc/options.md