มาใช้งาน Laravel CRUD Generator ตัวช่วยสร้าง CRUD สำเร็จรูป

Save Pongsiri
Apr 26, 2018 · 3 min read

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

ต่อมาทำการ 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

Migration Field

และการใช้ Options ต่าง ๆ ตามไปดูคู่มือนี้ https://github.com/appzcoder/crud-generator/blob/master/doc/options.md

ideagital

Idea, Digital, Technologies

ideagital

Idea, Digital, Technologies

Save Pongsiri

Written by

ศิลปินด้านพัฒนาซอฟต์แวร์ มีเป้าหมายคือพัฒนาตัวเองให้ยืดหยุ่นที่สุด ชอบความเรียบง่าย,ดนตรี,กีฬา และแมว

ideagital

Idea, Digital, Technologies