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 Kolom | Jenis Input | Validasi | Panjang (min & maks) |
---|---|---|---|
string | text, textarea, email, telephone, password url, search, file, hidden | required, string | ✅ |
integer | number, range, hidden | required, numeric | ✅ |
text | text, textarea, email, telephone, password url, search, file, hidden | required, string | ✅ |
boolean | radio, select, datalist | required, boolean | ❌ |
char | text, color, week, email, telephone, password url, search, file, hidden | required, string | ✅ |
date | date, month | required, date | ❌ |
time | time | required, date | ❌ |
year | select, datalist | required, numeric | ❌ |
dateTime | datetime-local | required, date | ❌ |
decimal | number, range, hidden | required, numeric | ❌ |
double | number, range, hidden | required, numeric | ❌ |
enum | select, radio, datalist | required, in | ❌ |
float | number, range, hidden | required, numeric | ❌ |
foreignId | select, datalist | required, exist | ❌ |
tinyInteger | number, range, hidden | required, numeric | ❌ |
mediumInteger | number, range, hidden | required, numeric | ❌ |
bigInteger | number, range, hidden | required, numeric | ❌ |
tinyText | text, textarea, email, telephone, password url, search, file, hidden | required, string | ✅ |
mediumText | text, textarea, email, telephone, password url, search, file, hidden | required, string | ✅ |
longText | text, textarea, email, telephone, password url, search, file, hidden | required, 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
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 tabelusers
maka harususer_id
.
- Harus merupakan nama tabel tetapi dalam bentuk tunggal +
- 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
- Pada ubah/edit:
- Diubah menjadi
Pastikan tabel & model terkait sudah ada, jika tidak maka kolom yang dipilih untuk ditampilkan di
select
/datalist
adalahid
, secara default kolom yang dipilih adalah kolom kedua di tabel terkait.
Membuat 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:
'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
php artisan storage:link
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:
[
'group' => 'products',
'access' => [
'product view',
'product create',
'product edit',
'product delete'
]
],
Konfigurasi
Di bawah ini adalah konfigurasi default untuk generator dan menu sidebar:
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:
"autoload": {
"files": [
"App/Generators/helper.php"
]
},
"extra": {
"laravel": {
"aliases": {
"GeneratorUtils": "App\\Generators\\GeneratorUtils",
}
}
}
Lalu jalankan
composer dump-autoload