Controller dan Inertia
Controller storefront mengumpulkan data yang diperlukan halaman lalu memanggil Inertia::render. Nama halaman harus mengikuti resolver di resources/js/app.js dan resources/js/ssr.js.
Mapping penting:
| Controller | Halaman |
|---|---|
DigitalStorePublishController | Biolink/OpenSsr, Biolink/ProductDetail, Biolink/AllProducts |
DigitalStoreController | Biolink/Pratinjau, Biolink/ProductDetail, Biolink/AllProducts |
CartPublishController | Published cart, checkout, pending, success |
CartController | Preview cart, checkout, simulator, success |
Route parameter
Route path-based dapat membuat parameter masuk secara positional ke method controller yang tidak mengharapkannya. Source mengatasi ini dengan membaca parameter eksplisit:
$slug = $request->route('slug') ?? $slug;
$page = $request->route('page') ?? $page;Pertahankan pola ini ketika menambah action pada group /{username}.
State cart
Cart customer disimpan di browser melalui localStorage. Pinia useCartStore membantu membaca dan menyegarkan data, tetapi mutasi cart masih tersebar pada komponen produk/cart dan bukan seluruhnya terenkapsulasi pada store.
Jangan mengubah key cart atau format item tanpa memeriksa halaman product, cart, checkout, dan flow variant.
Frontend dan SSR
app.js menginisialisasi plugin client, sedangkan ssr.js menginisialisasi resolver SSR dan plugin yang aman untuk server. Perubahan pada global registration, browser API, atau import Sass harus diuji dengan npm run build.
Data section
Section page builder adalah array bersarang di dokumen DigitalStorePage. Renderer membedakan section berdasarkan section_type dan component terkait. Tambahkan section baru dengan memeriksa writer page builder, renderer, halaman published, preview, dan SSR.
Perubahan lintas repository
Perubahan pada payment, order, stock, wallet, customer, atau service URL harus ditelusuri ke consumer di dazoapp, backend Go, engine WhatsApp, atau frontend utama. Dokumentasikan kontrak yang benar-benar digunakan, bukan nama fungsi saja.