Documentation Index
Fetch the complete documentation index at: https://docs.mejik.web.id/llms.txt
Use this file to discover all available pages before exploring further.
2. Comprehensive Documentation & Example Files
English Documentation
Guide to Creating Stable XLSX Templates for xlsx:generate
This guide explains the full syntax for the xlsx:generate command. A critical rule for stability is that all structural tags (if:, foreach, end..., ul_, ol_) must be placed in Column A.
1. Setup
Requires:composer require phpoffice/phpspreadsheet, mpdf/mpdf, symfony/expression-language.
2. Template Tag Reference
2.1. Conditional Blocks (Row-based, Column A)- Syntax:
- Start Cell (Column A):
${if:expression}. The shorthandif_is no longer supported. - End Cell (Column A):
${endif}. - Example: To check if the total is over 500, the syntax must be
${if:order.total > 500}.
- Syntax: Place
${ul_fieldname}or${ol_fieldname}in Column A. On the same row, place a single${item}placeholder in the column where you want the list text to appear.
- Syntax:
- Start Cell (Column A):
${foreach_arrayname as item}. - End Cell (Column A):
${endforeach}.
3. Note on Expressions and Data
TheExpressionLanguage library works best when accessing nested data. Your JSON should be structured with objects. The expression order.total correctly accesses the total key within the order object in your JSON data.
4. Example Files (Corrected for Your Template)
A. XLSX Template (final_report_template.xlsx)
Please create an XLSX file that matches your screenshot, but with these critical corrections:
- Move all structural tags to Column A.
- Use the correct
${if:expression}syntax.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Sales Report (Merged B:E) | ||||
| 2 | Report Date: | ${report_date} | |||
| 3 | Order ID: | ${order.id} | |||
| 4 | Customer: | ${order.customer.name} | |||
| 5 | |||||
| 6 | Product Purchase Detail | ||||
| 7 | Image | Product (SKU) | Description | Total | |
| 8 | ${foreach_order.products as item} | ${img_item.imageUrl} | ${item.name} (${item.sku}) | ${item.description} | ${item.total_price} |
| 9 | ${endforeach} | GRAND TOTAL | ${order.total} | ||
| 10 | |||||
| 11 | ${if:order.total > 500} | Special Note | |||
| 12 | This high-value order qualifies for priority shipping. | ||||
| 13 | ${endif} | ||||
| 14 | |||||
| 15 | Key Benefits | ||||
| 16 | ${ul_benefits} | ${item} |
B. JSON Data (data.json)
The JSON data remains the same and is correct.
1. Dokumentasi Lengkap (Bahasa Indonesia)
Panduan Membuat Templat XLSX yang Stabil untuk xlsx:generate
Panduan ini menjelaskan sintaks lengkap untuk perintah xlsx:generate. Sebuah aturan penting untuk stabilitas adalah semua tag struktural (if:, foreach, end..., ul_, ol_) harus ditempatkan di Kolom A.
1. Pengaturan
Membutuhkan:composer require phpoffice/phpspreadsheetcomposer require mpdf/mpdf(untuk mode PDF)composer require symfony/expression-language
2. Referensi Tag Templat
2.1. Variabel Sederhana & Bersarang (Nested)- Sintaks:
${variabel}atau${objek.key}. - Penggunaan: Dapat ditempatkan di sel mana pun selain Kolom A untuk menghindari kesalahan pembacaan sebagai tag struktural.
- Sintaks:
${img_namavariabel}atau${img_objek.key}. - Perilaku Mode:
merge/pdf: Gambar akan disematkan (embed).html: Placeholder akan diganti dengan URL gambar dalam bentuk teks biasa.
- Sintaks:
- Sel Awal (Kolom A):
${if:ekspresi}. Shorthandif_tidak lagi didukung. - Sel Akhir (Kolom A):
${endif}. - Contoh: Untuk memeriksa apakah total lebih dari 500, sintaksnya harus
${if:order.total > 500}.
- Sintaks: Tempatkan
${ul_namavariabel}atau${ol_namavariabel}di Kolom A. Pada baris yang sama, tempatkan satu placeholder${item}di kolom tempat Anda ingin teks daftar ditampilkan. - Penggunaan: Perintah akan menggunakan baris tersebut sebagai templat, menyisipkan baris baru di bawahnya dan mengganti
${item}dengan nilai dari array Anda.
- Sintaks:
- Sel Awal (Kolom A):
${foreach_namaarray as item}. - Sel Akhir (Kolom A):
${endforeach}. - Penggunaan: Baris-baris di antara penanda akan diduplikasi. Ini berfungsi untuk beberapa perulangan
foreachyang terpisah di lembar kerja yang sama.
3. Catatan tentang Ekspresi dan Data
LibraryExpressionLanguage bekerja paling baik saat mengakses data bersarang (nested). JSON Anda harus terstruktur dengan objek. Ekspresi order.total dengan benar mengakses kunci total di dalam objek order pada data JSON Anda.
2. Contoh File untuk Pengujian
A. Templat XLSX (final_report_template.xlsx)
Silakan buat file XLSX yang cocok dengan tangkapan layar Anda, tetapi dengan koreksi penting berikut:
- Pindahkan semua tag struktural ke Kolom A.
- Gunakan sintaks
${if:ekspresi}yang benar.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Sales Report (Merged B:E) | ||||
| 2 | Report Date: | ${report_date} | |||
| 3 | Order ID: | ${order.id} | |||
| 4 | Customer: | ${order.customer.name} | |||
| 5 | |||||
| 6 | Product Purchase Detail | ||||
| 7 | Gambar | Produk (SKU) | Deskripsi | Total | |
| 8 | ${foreach_order.products as item} | ${img_item.imageUrl} | ${item.name} (${item.sku}) | ${item.description} | ${item.total_price} |
| 9 | ${endforeach} | GRAND TOTAL | ${order.total} | ||
| 10 | |||||
| 11 | ${if:order.total > 500} | Catatan Khusus | |||
| 12 | Pesanan bernilai tinggi ini memenuhi syarat untuk pengiriman prioritas. | ||||
| 13 | ${endif} | ||||
| 14 | |||||
| 15 | Keuntungan Utama | ||||
| 16 | ${ul_benefits} | ${item} |
