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

Save Pongsiri
ideagital
Published in
3 min readApr 26, 2018

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
  • email
  • 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

--

--

Save Pongsiri
ideagital

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