background

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

6 months ago ◦ 3,510 Views

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

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

Package นี้เป็นตัวช่วยสร้าง CRUD, API, Controller, Model, Migration, View  แบบอัตโนมัติด้วยการรันเพียงคำสั่งเดียว เหมาะกับสำหรับสาย Backend ที่นั่งทำแต่ CRUD วันละหลาย ๆ Module หรือสาย Frontend ที่กำลังหาตัวช่วยจบงานหลังบ้านโดยไม่ต้องง้อ Backend บอกได้เลยว่าคุณมาถูกทางแล้วครับ

สร้างระบบหลังบ้านก่อน

เริ่มต้นโดยการเปิดโปรเจค Laravel ของบน Teminal (หากยังไม่ติดตั้งดูที่ การติดตั้ง Laravel 5.6 แบบสมบูรณ์) ตั้งค่า Database ให้เรียบร้อย แล้วสร้าง auth ไว้เลย ด้วยคำสั่ง

php artisan make:auth

แล้วรัน migration เพื่อสร้างตาราง users และ  password_resets ตามที่ Laravel ให้มา

php php artisan

ก็จะได้ระบบ Login และ Register หน้าตาประมาณนี้ครับ


ติดตั้ง CRUD Generator

และแล้วก็ถึงเวลาโหลด 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 



#laravel #php #crud #backend #frontend #tutorial

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