@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => ''])
MSJFramework
Panduan ringkas namun tetap cukup lengkap untuk memahami cara kerja struktur menu dinamis di
MSJFramework, hubungan antara sys_gmenu,
sys_dmenu, sys_table, dan
sys_auth, fungsi setiap layout bawaan, pola routing ke controller
layout, mekanisme metadata field, validasi, query lookup, generate ID, sampai contoh
implementasi
nyata yang sudah tersedia di project ini agar proses membuat menu baru lebih cepat, konsisten,
dan mudah dipelajari oleh developer lain.
1. Buat / siapkan tabel migrasi
2. Daftarkan menu di sys_dmenu
3. Atur field di sys_table
4. Beri akses lewat sys_auth
sys_gmenu: grup menu sidebar.sys_dmenu: daftar menu, url, icon, layout, tabel.sys_table: metadata field, validasi, query, posisi, dan tampilan.sys_auth: hak akses per role, termasuk add,
edit, delete, print,
approval, dan posting.
sys_id + sys_counter: generator ID otomatis.sys_enum: master enum layout, type, status, dan nilai default.Function_Helper::resolveContentView(): helper global pencari view konten
berdasarkan sys_gmenu aktif.PageController membaca sys_dmenu.url.layout != manual, framework mengarah ke controller layout terkait.standr ke StandrController, transc ke
TranscController, listdt ke ListdtController.
manual, view diambil langsung dari folder sesuai grup menu dan url.gmenu pada list_menu yang menggunakan
layout standr,
master, report,
transc dan listdt maka yang harus
lakukan adalah mengupdate gmnu di sys_table dan sys_auth.
example_gmenu: semua menu contoh.example_tabel_form_standard: contoh layout standard.example_tabel_form_master: contoh layout master.example_tabel_form_transaction: contoh layout transaction.menu_framework_docs: menu dokumentasi framework.example_insert_transaction: sample data transaction untuk trexam.
| Layout | Fungsi | Controller / View | Contoh Menu |
|---|---|---|---|
standr |
CRUD satu tabel, form biasa, cocok untuk master sederhana. | StandrController |
Layout - Standard (msfrmd) |
master |
CRUD dengan list lebih kaya, export, split posisi kiri-kanan. | MasterController |
Layout - Master (msfrmm), Example Menu X (dmenux) |
system |
Header-detail metadata internal framework. | SystemController |
System Auth (authxx), System Table (tablex) |
sublnk |
Sub menu / child data yang ditautkan dari menu lain. | SublnkController |
Layout - Sublink (sbexam) |
report |
Filter report, query dinamis, result DataTable, export. | ReportController |
Layout - Report (rpexam), Report Syslog (rsyslg) |
transc |
Transaksi header-detail dengan tabel _h dan _d, alur
status, approval, posting, reverse, dan print preview PDF. |
TranscController |
Layout - Transaction (trexam) |
listdt |
Halaman list / dokumentasi tanpa CRUD, tetap lewat controller layout. | ListdtController |
Framework Docs (fwdocs) |
manual |
Halaman bebas yang langsung menuju view spesifik tanpa controller layout. | View custom | Dashboard (dashbr), Report Seeder (rpseed) |
string, char, text: input teks dasar.number, currency: angka dan nominal.date, date2: tanggal tunggal / rentang.enum: select option dari query.search: modal lookup berbasis query.image, file: upload file / gambar.hidden: nilai sistem yang tidak ditampilkan.join, report, sublink: kebutuhan khusus layout
tertentu.field: nama kolom database.alias: label tampilan.validate: rule Laravel validation.query: sumber data untuk enum/search/join/report.primary: primary key field.list: tampil di list / tabel.show: tampil di form / view.position:
0 standard,
1 header,
2 detail,
3 left,
4 right.
Baca bagian ini jika Anda ingin memilih layout yang paling cocok lebih dulu. Urutannya dibuat dari layout yang paling umum dipakai sampai layout yang paling khusus.
Kegunaan: menu CRUD satu tabel yang sederhana dan cepat dipakai untuk master data umum.
Gunakan jika: Anda hanya butuh satu tabel, form sederhana, dan alur CRUD standar.
sys_table.validate.enum, search, dan generate ID.Kegunaan: menu CRUD satu tabel dengan list yang lebih kaya dan nyaman untuk data operasional.
Gunakan jika: Anda masih memakai satu tabel, tetapi butuh list, filter, dan komponen form yang lebih fleksibel.
position 3 dan
4.
search, enum,
custom-select, dan select-multiple.
standr.
Kegunaan: menu pengaturan internal framework dan tabel metadata sistem.
Gunakan jika: menu yang dibuat berhubungan langsung dengan konfigurasi aplikasi atau tabel sistem.
Kegunaan: child menu yang dibuka dari menu induk untuk menampilkan data turunan.
Gunakan jika: data hanya bermakna ketika dibuka dari parent atau transaksi induknya.
Kegunaan: halaman filter dan hasil report berbasis query dinamis.
Gunakan jika: tujuan utamanya adalah mencari, menyaring, menampilkan, dan mengekspor hasil query.
sys_table.search, enum, date range, dan query khusus.
Kegunaan: transaksi header-detail dengan alur pilih transaksi, add, edit, show, hapus, dan print.
Gunakan jika: satu data utama memiliki banyak baris detail dan perlu alur input transaksi lengkap.
trs_rekap_tagihan._h sebagai header dan _d sebagai
detail.position = 1 dipakai untuk header dan position = 2
untuk detail.E = Entry,
A = Approve,
R = Reject,
F = Finish,
C = Cancel.
item otomatis diisi kelipatan 10, 20, 30....search dan enum di header maupun detail,
termasuk custom-select dan select-multiple./form-transaction-options/{page}.
sys_table, termasuk kolom status dan badge warnanya.Approve, UnApprove,
Reject, dan Ajukan Kembali membutuhkan hak
approval di
sys_auth.
Posting dan Reverse membutuhkan hak
posting di sys_auth.
approval aktif pada menu itu, maka
Posting bisa langsung dipakai dari status E.
Jika tidak ada hak posting aktif, maka flow approval tetap bisa
dipakai tanpa proses posting terpisah.
Approve dan Reject saat E jika flow
approval aktif,
UnApprove saat A,
Ajukan Kembali saat R,
Posting saat A atau langsung E
jika approval tidak dipakai,
Reverse saat F.
Edit dan Delete otomatis dikunci saat status sudah
A, F, atau C.
trexam).Kegunaan: halaman list atau dokumentasi tanpa CRUD dinamis.
Gunakan jika: Anda hanya perlu menampilkan konten informasi atau list statis dalam satu halaman.
list.blade.php.gmenu.Kegunaan: halaman bebas yang tidak ingin mengikuti engine CRUD dinamis.
Gunakan jika: kebutuhan halaman terlalu khusus dan akan lebih cepat dibuat manual daripada dipaksa ke layout dinamis.
Function_Helper::resolveContentView() dipakai layout listdt untuk mencari
view berdasarkan daftar sys_gmenu aktif.StandrController punya fallback metadata sys_table berdasarkan
dmenu bila gmenu menu dipindah tetapi metadata belum ikut dipindah.
TranscController juga memakai fallback metadata sys_table
berdasarkan dmenu, sehingga menu transaksi tetap bisa membaca field walau posisi
gmenu dipindah.
PageController::searchOptions() sekarang bisa membaca field yang punya
query walau tidak literal bertipe search, agar cocok untuk lookup
transaksi.
PageController::transactionOptions() membangun modal pilih transaksi dari query
metadata dan sekaligus menyiapkan URL aksi show, edit,
delete, approve, unapprove, reject,
posting, reverse, dan print.
Gunakan bagian ini sebagai panduan cepat untuk memahami kapan tombol aksi transaksi muncul dan apa dampaknya ke status dokumen.
| Kode | Arti | Badge |
|---|---|---|
E |
Entry | Entry |
A |
Approve | Approve |
R |
Reject | Reject |
F |
Finish | Finish |
C |
Cancel | Cancel |
E A / R F C
E atau Entry.Approve hanya muncul jika user punya hak
approval dan status masih E.
Reject juga muncul saat status E dan akan
meminta alasan reject melalui textarea sebelum status berubah menjadi
R.
UnApprove muncul saat status A dan akan
mengembalikan transaksi ke E.
Ajukan Kembali muncul saat status R dan akan
mengembalikan transaksi ke E agar bisa diproses approval lagi.
Posting hanya muncul jika user punya hak
posting dan status sudah A, atau langsung dari
E jika menu itu memang tidak memakai flow approval terpisah.
posting aktif, maka alur approval akan
berhenti di A atau R sampai user melakukan
UnApprove dari A atau
Ajukan Kembali dari R untuk kembali ke
E.
Reverse hanya muncul jika user punya hak
posting dan status sudah F.
A, F, atau C, tombol
Edit dan Delete otomatis dikunci oleh UI dan backend.
| Skenario | Flow |
|---|---|
approval = 1 dan posting = 1 |
E -> A / R, lalu A -> F -> C dan
R -> E |
Hanya posting = 1 |
E -> F -> C |
Hanya approval = 1 |
E -> A / R -> E |
Jika Anda hanya butuh gambaran cepat, cukup ikuti tujuh langkah ini. Jika perlu panduan detail per layout, lanjutkan ke accordion di bawahnya.
standr, master, report,
transc, listdt, atau manual.
sys_dmenu.sys_auth.sys_table.sys_id dan sys_counter._h dan _d.msfrmd): contoh standard.msfrmm): contoh master.msfrms): contoh system.rpexam): contoh report.sbexam): contoh sublink.trexam): contoh transaction sederhana dengan header search dan
detail search/enum.fwdocs): dokumentasi framework dengan layout listdt.
Bagian ini menjelaskan alur teknis yang biasa dipakai di MSJFramework sampai menu benar-benar bisa
dibuka.
Urutan bacanya disarankan:
1. pilih layout yang sesuai,
2. baca langkah teknis layout tersebut,
3. buat migration dan seeder,
4. jalankan migrate:fresh --seed atau db:seed,
5. uji menu dari sidebar.
Cocok untuk: CRUD satu tabel, form sederhana, master data umum.
master_karyawan.nik atau
id.
sys_dmenu dengan:
layout = standr,
tabel = master_karyawan,
url,
dmenu,
gmenu.
sys_auth.sys_table untuk semua field yang tampil di list, add, edit,
dan show.
position = 0.
primary = 1.sys_id lalu pastikan counter awal
tersedia di sys_counter.DatabaseSeeder bila ingin ikut saat
migrate:fresh --seed.
Contoh: Layout - Standard (msfrmd).
Cocok untuk: CRUD satu tabel dengan list lebih kaya, export, dan toolbar data.
standr: migration tabel, seeder
sys_dmenu, sys_auth, dan sys_table.
sys_dmenu set layout = master.position = 3 untuk field kiri dan position = 4
untuk field kanan bila form ingin terbagi dua sisi.list = 1.query pada field bertipe
search atau enum.
gmenu-nya, framework punya fallback metadata
berdasarkan dmenu, tetapi tetap disarankan metadata
sys_table ikut dirapikan.
Contoh: Layout - Master (msfrmm).
Cocok untuk: menu internal framework yang butuh pola metadata sistem.
layout = system.sys_table seperti layout CRUD lain.sys_auth.Contoh: System Auth (authxx), System Table
(tablex).
Cocok untuk: child data yang dibuka dari menu induk.
layout = sublnk.sys_table untuk field child yang tampil.Contoh: Layout - Sublink (sbexam).
Cocok untuk: filter report, query dinamis, hasil tabel dan export.
sys_dmenu dengan layout = report.sys_table, field yang tampil pada halaman filter harus
show = 1.
query untuk field search, enum, atau
lookup report lainnya.Contoh: Layout - Report (rpexam), Report
Syslog (rsyslg).
Cocok untuk: transaksi header-detail dengan add/edit/show/print.
example_transaction.example_transaction_h untuk header,
example_transaction_d untuk detail.
sys_id.
idtrx atau id_tanterima.sys_dmenu dengan:
layout = transc,
tabel = example_transaction.
sys_auth untuk akses add, edit, delete, dan print.approval dan posting di sys_auth.
sys_table:
position = 1 untuk header,
position = 2 untuk detail.
primary = 1.query pada field primary header atau field header bertipe
search.
item bila ingin urutan
otomatis 10, 20, 30....search atau enum di detail, isi query lookup
di metadata agar modal dan select dapat memuat data via AJAX.remark untuk menyimpan alasan reject dan tambahkan metadata field
yang sesuai di header maupun detail bila memang ingin ikut dilacak.
Pada contoh saat ini, remark disimpan untuk proses reject dan
tidak ditampilkan di halaman tambah, edit, maupun show biasa.CASE WHEN untuk mengubah kode status menjadi
label seperti Entry, Approve, Reject, Finish, dan Cancel.E -> A / R, lalu A -> F -> C untuk menu yang memakai
approval dan posting sekaligus. Jika hanya salah satu flow yang dipakai,
sesuaikan rule bisnisnya, misalnya E -> F -> C untuk posting saja
atau E -> A / R -> E untuk approval saja.A, F, atau C,
tombol Edit dan Delete otomatis dikunci oleh UI dan
backend.Contoh: Layout - Transaction (trexam).
Cocok untuk: halaman dokumentasi atau halaman list statis tanpa CRUD.
sys_dmenu dengan layout = listdt.resources/views/{gmenu}/{url}/list.blade.php.
gmenu lain, resolver view akan mencoba
mencari kandidat berdasarkan semua sys_gmenu aktif.fwdocs.Contoh: Framework Docs (fwdocs).
Cocok untuk: halaman bebas yang memang punya view atau logic sendiri.
sys_dmenu dengan layout = manual.standr, master, report, atau
transc.
Contoh: Dashboard (dashbr), Report Seeder
(rpseed).