Skip to content

WARNING

kamu sedang menjelajahi dokumentasi untuk versi Generator yang lama nih. Tolong pertimbangkan untuk memperbarui proyek kamu ke versi Generator 0.3.x yaa.

Cara Pemakaian

Buat CRUD pertama kali

Akses pada browser kamu /generators/create jika kamu menggunkan versi lengkap /simple-generators/create untuk versi sederhana

Di bawah ini adalah tabel tentang jenis input & validasi yang didukung saat kamu menggunakan beberapa jenis kolom.

Jenis KolomJenis InputValidasiPanjang (min & maks)
stringtext, textarea, email, telephone, password url, search, file, hiddenrequired, string
integernumber, range, hiddenrequired, numeric
texttext, textarea, email, telephone, password url, search, file, hiddenrequired, string
booleanradio, select, datalistrequired, boolean
chartext, color, week, email, telephone, password url, search, file, hiddenrequired, string
datedate, monthrequired, date
timetimerequired, date
yearselect, datalistrequired, numeric
dateTimedatetime-localrequired, date
decimalnumber, range, hiddenrequired, numeric
doublenumber, range, hiddenrequired, numeric
enumselect, radio, datalistrequired, in
floatnumber, range, hiddenrequired, numeric
foreignIdselect, datalistrequired, exist
tinyIntegernumber, range, hiddenrequired, numeric
mediumIntegernumber, range, hiddenrequired, numeric
bigIntegernumber, range, hiddenrequired, numeric
tinyTexttext, textarea, email, telephone, password url, search, file, hiddenrequired, string
mediumTexttext, textarea, email, telephone, password url, search, file, hiddenrequired, string
longTexttext, textarea, email, telephone, password url, search, file, hiddenrequired, string

INFO

Validasi required akan berubah menjadi nullable jika kamu tidak mencentang checkbox yang terdapat pada form, jika ada jenis input password akan otomatis ditambahkan validasi confirmed, min:1|max:100 untuk teks dan email|unique untuk jenis input email.

Membuat relasi model

Pembuatan Relasi

Sayangnya Generator saat ini hanya mendukung One To Many (Inverse) / Belongs To.

Terdapat beberapa aturan yang harus diikuti jika kamu ingin membuat relasi:

  • Nama Kolom:
    • Harus merupakan nama tabel tetapi dalam bentuk tunggal + _id, misalnya: jika kamu memiliki tabel users maka harus user_id.
  • Jenis Kolom:
    • Diubah menjadi foreignId.
    • Untuk constrains atau nama model terkait, kamu bisa mengisi dengan nama tabel (secara otomatis berubah menjadi jamak).
    • Aksi pada ubah/edit & penghapusan:
      • Pada ubah/edit: nothing, cascade, restrict
      • Pada penghapusan: nothing, cascade, restrict, null

Pastikan tabel & model terkait sudah ada, jika tidak maka kolom yang dipilih untuk ditampilkan di select/datalist adalah id, secara default kolom yang dipilih adalah kolom kedua di tabel terkait.

Membuat Unggah File

Unggah File

Atur jenis kolom menjadi string, jenis input menjadi file, pilih jenis file (saat ini hanya mendukung gambar), isi ukuran maksimal (opsional), dan nilai default (harus berupa tautan yang valid), juga kami menggunakan Intervention Image untuk memanipulasi gambar yang diunggah. semua konfigurasi untuk gambar tersedia di config/generator.php.

Konfigurasi gambar default:

php
'image' => [
    /**
    * Tempat untuk menyimpan gambar.
    *
    * opsi yang tersedia:
    * 1. public
    * 2. storage
    */
    'path' => 'storage',

    /**
    * Akan digunakan jika gambar nullable dan nilai default adalah null.
    */
    'default' => 'https://via.placeholder.com/350?text=No+Image+available',

     /**
    * Memotong gambar yang diunggah menggunakan Intervention Image.
    */
    'crop' => true,

      /**
    * Jika diatur ke true, rasio aspek gambar yang diunggah akan tetap asli.
    */
    'aspect_ratio' => true,

    /**
    * Potong ukuran gambar.
    */
    'width' => 500,
    'height' => 500,
],

INFO

Jika kamu menggunakan storage untuk menyimpan gambar, pastikan kamu menjalankan

sh
php artisan storage:link

Membuat menu Sidebar

Membuat menu Sidebar

INFO

Fitur ini hanya tersedia di versi lengkap.

kamu dapat dengan mudah membuat menu sidebar dinamis dengan hanya beberapa input. semua konfigurasi menu sidebar berada di config/generator.php

Bagaimana jika kamu tidak membutuhkan menu sidebar dinamis, kamu hanya ingin membuat menu kamu langusng pada .blade. ya, tenang kami sudah menyediakannya, kamu dapat melihatnya disni.

Hak Akses (Role & Permissions)

Saat kamu menggunakan versi lengkap, setelah membuat modul baru akan secara otomatis membuatkan beberapa permissions dan mengaitkannya ke Role admin. semua konfigurasi permissions disimpan di config/permission.php

Berikut contohnya:

php
[
    'group' => 'products',
    'access' => [
        'product view',
        'product create',
        'product edit',
        'product delete'
    ]
],

Konfigurasi

Di bawah ini adalah konfigurasi default untuk generator dan menu sidebar:

php
return [
     /**
     * Jika ada file input (gambar) sebagai default akan digunakan opsi di bawah ini.
     */
    'image' => [
        /**
         * Tempat untuk menyimpan gambar.
         *
         * opsi yang tersedia:
         * 1. public
         * 2. storage
         */
        'path' => 'storage',

       /**
         * Akan digunakan jika gambar nullable dan nilai default adalah null.
         */
        'default' => 'https://via.placeholder.com/350?text=No+Image+available',

        /**
         * Memotong gambar yang diunggah menggunakan intervention image.
         */
        'crop' => true,

       /**
         * Jika diatur ke true, rasio aspek gambar yang diunggah akan tetap asli.
         */
        'aspect_ratio' => true,

        /**
         * Potong ukuran gambar.
         */
        'width' => 500,
        'height' => 500,
    ],

    'format' => [
         /**
         * Akan digunakan untuk tahun pertama pada select, jika ada jenis kolom tahun.
         */
        'first_year' => 1900,

         /**
         * Jika ada jenis kolom tanggal akan di-cast dan ditampilkan menggunakan format ini, tetapi untuk input tanggal masih akan digunakan format Y-m-d.
         *
         * format umum lainnya:
         * - M d Y
         * - d F Y
         * - Y m d
         */
        'date' => 'd/m/Y',

        /**
         * Jika ada jenis input bulan akan di-cast dan ditampilkan menggunakan format ini.
         */
        'month' => 'm/Y',

       /**
         * Jika ada jenis input waktu akan di-cast dan ditampilkan menggunakan format ini.
         */
        'time' => 'H:i',

        /**
         * Jika ada jenis kolom datetime atau datetime-local pada input, akan di-cast dan ditampilkan menggunakan format ini.
         */
        'datetime' => 'd/m/Y H:i',

         /**
         * Batas string pada tampilan indeks untuk jenis kolom text atau longtext.
         */
        'limit_text' => 100,
    ],

     /**
     * Ini akan digunakan untuk generator untuk mengelola dan menampilkan menu di tampilan sidebar.
     *
     * Contoh:
     * [
     *   'header' => 'Main',
     *
     *   // Semua izin di menus[] dan submenus[]
     *   'permissions' => ['test view'],
     *
     *   menus' => [
     *       [
     *          'title' => 'Main Data',
     *          'icon' => '<i class="bi bi-collection-fill"></i>',
     *          'route' => null,
     *
     *          // izin selalu null ketika ada submenus
     *          'permission' => null,
     *
     *          // Semua izin di submenus[] dan akan kosong[] ketika submenus sama dengan []
     *          'permissions' => ['test view'],
     *
     *          'submenus' => [
     *                 [
     *                     'title' => 'Tests',
     *                     'route' => '/tests',
     *                     'permission' => 'test view'
     *                  ]
     *               ],
     *           ],
     *       ],
     *  ],
     *
     * Kode di bawah ini selalu berubah ketika kamu menggunakan generator dan terkadang kamu harus merapikan atau mmem-format kodenya.
     */
    'sidebars' => [
        [
            'header' => 'Main',
            'permissions' => [
                'test view'
            ],
            'menus' => [
                [
                    'title' => 'Main Data',
                    'icon' => '<i class="bi bi-collection-fill"></i>',
                    'route' => null,
                    'permission' => null,
                    'permissions' => [
                        'test view'
                    ],
                    'submenus' => [
                        [
                            'title' => 'Tests',
                            'route' => '/tests',
                            'permission' => 'test view'
                        ]
                    ]
                ]
            ]
        ],
        [
            'header' => 'Users',
            'permissions' => [
                'user view',
                'role & permission view'
            ],
            'menus' => [
                [
                    'title' => 'Users',
                    'icon' => '<i class="bi bi-people-fill"></i>',
                    'route' => '/users',
                    'permission' => 'user view',
                    'permissions' => [],
                    'submenus' => []
                ],
                [
                    'title' => 'Roles & permissions',
                    'icon' => '<i class="bi bi-person-check-fill"></i>',
                    'route' => '/roles',
                    'permission' => 'role & permission view',
                    'permissions' => [],
                    'submenus' => []
                ],
            ]
        ],
    ],
];

Pengaturan Production

Karena pustaka ini hanya di-instal dalam proses pengembangan, maka beberapa file tidak akan disertakan dalam lingkungan produksi. jadi kamu harus melakukan langkah-langkah berikut yaa:

Di composer.json tambahkan kode di bawah ini:

json
"autoload": {
    "files": [
        "App/Generators/helper.php"
    ]
},
"extra": {
    "laravel": {
        "aliases": {
            "GeneratorUtils": "App\\Generators\\GeneratorUtils",
        }
    }
}

Lalu jalankan

sh
composer dump-autoload