Controller
Dans le contrôleur de l'app standalone, il faut passer les paramètres dans la structure "session_info":
class MonAppController(http.Controller):
@http.route("/mon_module/mon_app/<id_>", auth="public", website=True)
def mon_app(self, id_):
return request.render(
'mon_module.mon_app',
{
"session_info": {
**request.env["ir.http"].get_frontend_session_info(),
'mon_param': mon_param,
}
}
)
Component
Dans le composant JS de votre app, il faut importer session de @web/session cela vous donnera accès à votre objet de session avec le(s) paramètre(s) supplémentaires.
Dans l'exemple ici, je récupère la session et je met mon paramètre dans mon state, mais il pourrait être mis dans les props aussi.
/** @odoo-module **/
import { session } from "@web/session";
import { Component, useState, onMounted, onWillUnmount, xml } from "@odoo/owl";
export class Root extends Component {
static template = "mon_module.Root";
static components = { };
static props = { };
setup() {
// on récupère la session
this.session = session;
// useState : objet mutable qui déclenche le re-render
const state = useState({
MonParam: this.session.mon_param
});