Menu di Odoo adalah salah satu komponen penting dalam antarmuka pengguna, yang memungkinkan navigasi di dalam aplikasi. Pembuatan menu dalam Odoo dilakukan melalui file XML yang didefinisikan dalam modul yang Anda kembangkan. Artikel ini akan membahas secara lengkap bagaimana membuat menu di Odoo menggunakan XML.
1. Komponen Menu di Odoo
Di Odoo, ada tiga jenis menu utama:
- Menu Induk (Root Menu): Menu utama yang muncul di bagian atas aplikasi.
- Submenu: Menu yang berada di dalam menu induk.
- Aksi: Menu yang terhubung langsung ke aksi seperti daftar, form, atau laporan.
2. Struktur Dasar XML Menu di Odoo
Berikut adalah contoh struktur dasar untuk mendefinisikan menu di Odoo menggunakan XML:
<odoo>
<data>
<!-- Root Menu -->
<menuitem
id="menu_root_example"
name="Contoh Menu"
sequence="10" />
<!-- Submenu -->
<menuitem
id="menu_sub_example"
name="Submenu Contoh"
parent="menu_root_example"
sequence="20" />
<!-- Menu dengan Aksi -->
<menuitem
id="menu_action_example"
name="Aksi Contoh"
parent="menu_sub_example"
action="action_example"
sequence="30" />
</data>
</odoo>
3. Penjelasan Elemen Menu
- id: Identitas unik menu yang digunakan untuk merujuk menu dalam modul lain.
- name: Nama yang ditampilkan pada antarmuka pengguna.
- parent: Menentukan menu induk (jika ini adalah submenu).
- action: Aksi yang dipicu saat menu diklik (seperti membuka daftar, form, atau laporan).
- sequence: Angka yang menentukan urutan menu.
4. Menambahkan Aksi ke Menu
Menu biasanya terhubung dengan aksi yang mendefinisikan apa yang dilakukan menu tersebut. Aksi didefinisikan menggunakan elemen <record>
dengan model ir.actions.act_window. Berikut contohnya:
Aksi untuk Membuka Model
<record id="action_example" model="ir.actions.act_window">
<field name="name">Aksi Contoh</field>
<field name="res_model">example.model</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Tambahkan data untuk Contoh!
</p>
</field>
</record>
Menghubungkan Aksi ke Menu
<menuitem
id="menu_action_example"
name="Aksi Contoh"
parent="menu_sub_example"
action="action_example"
sequence="30" />
5. Contoh Implementasi Lengkap
Misalkan kita ingin membuat menu untuk model example.model. Berikut adalah implementasi XML lengkapnya:
<odoo>
<data>
<!-- Root Menu -->
<menuitem
id="menu_root_example"
name="Modul Contoh"
sequence="10" />
<!-- Submenu -->
<menuitem
id="menu_sub_example"
name="Data Contoh"
parent="menu_root_example"
sequence="20" />
<!-- Aksi -->
<record id="action_example" model="ir.actions.act_window">
<field name="name">Data Contoh</field>
<field name="res_model">example.model</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Menu dengan Aksi -->
<menuitem
id="menu_action_example"
name="Lihat Data"
parent="menu_sub_example"
action="action_example"
sequence="30" />
</data>
</odoo>
6. Mengatur Urutan Menu
Gunakan atribut sequence untuk menentukan posisi menu. Nilai terkecil akan ditampilkan terlebih dahulu.
7. Penyimpanan File
File XML yang mendefinisikan menu biasanya disimpan di dalam direktori views modul Anda. Pastikan untuk menambahkan file ini ke dalam manifest.py modul Anda:
Struktur Direktori
my_module/
│
├── __init__.py
├── __manifest__.py
└── views/
└── example_menu.xml
Daftar di manifest.py
'data': [
'views/example_menu.xml',
],
8. Validasi dan Debugging
- Pastikan ID menu unik di seluruh sistem Odoo.
- Periksa log Odoo untuk menemukan kesalahan jika menu tidak muncul.
- Jika menu tidak terlihat, pastikan pengguna Anda memiliki akses ke model terkait.
Dengan panduan ini, Anda dapat membuat menu di Odoo menggunakan XML dengan mudah. Semoga bermanfaat!