1. Vérifiez le point de départ
Dans Apps, Hello Odoo doit être installé. Dans custom_addons/training_hello/__manifest__.py, depends contient encore base et data est vide.
Si ce n'est pas le cas, terminez d'abord la section 1. Nous voulons enrichir un module qui fonctionne déjà, pas diagnostiquer deux étapes à la fois.
2. Suivez le trajet avant de le construire
- Un menu racine ajoute Hello Odoo au sélecteur d'applications.
- Ce menu ouvre une client action stockée dans la base.
- Le champ
tagde l'action désigne une entrée du registry JavaScript. - Le registry retourne notre composant Owl.
- Le composant affiche son template XML.
- Le clic sur le bouton appelle une méthode qui utilise le service de notification.
C'est une table de correspondance côté client, organisée en catégories. Ici, la catégorie actions associe une clé technique — training_hello.hello_world — au composant Owl à lancer.
Le tag sera défini dans l'enregistrement ir.actions.client que nous créerons à l'étape 3, dans views/hello_world_menus.xml. Sa valeur sera exactement training_hello.hello_world, la clé enregistrée à l'étape 2 dans static/src/hello_world/hello_world.js (Programmer le composant), puis reprise dans l'action à l'étape 3 (Construire l'interface).
Odoo sépare ce qui persiste dans la base, ce qui dessine l'écran et ce qui réagit dans le navigateur. Cette séparation semble longue pour un bouton ; elle devient précieuse dès que l'application grandit.
3. Préparez le dossier de l'écran
Dans custom_addons/training_hello/, créez successivement les dossiers static, src et hello_world. Vous devez obtenir :
training_hello/
├── __manifest__.py
├── static/
│ └── src/
│ └── hello_world/
└── views/Le dossier hello_world/ accueillera le JavaScript et le template du même écran. Le fichier de menu ira dans views/ :
- la balise
menuitemcréera un enregistrement racine du modèleir.ui.menupour l'entrée Hello Odoo ; - la balise
recordcréera un enregistrement du modèleir.actions.clientpour l'action qui ouvre le composant ; - l'attribut
action="training_hello_action"lie le menu à cette action par son identifiant externe ; Odoo conserve ce binding sur l'enregistrement du menu, tandis que les fichiers JavaScript et XML déclarés dansassetssont chargés comme ressources du navigateur.
4. Ne complétez pas encore le manifeste
À la fin de l'étape 3, nous ajouterons les fichiers au manifeste lorsqu'ils existeront tous. Cela permettra de lire clairement les deux conventions de chemin utilisées par Odoo :
- dans
data, le chemin est relatif au dossier du module ; - dans
assets, le chemin commence par le nom technique du module.
Le module installé reste utilisable, et son nouveau dossier d'interface est prêt. Vous connaissez déjà le trajet que chaque fichier viendra compléter.