【问题标题】:Call qweb template inside odoo data template在odoo数据模板中调用qweb模板
【发布时间】:2021-02-25 14:00:36
【问题描述】:

我正在尝试为登录和注册提供 OTP 服务。所以我为 otp 服务制作了一个运行良好的模块。但是在这里对于 UI,我制作了应该在登录页面内调用的模板以显示 otp 框和 otp 发送按钮。请参阅下面的示例代码:

<templates xml:space="preserve">
    <div name="otp_service" t-name="bulk_sms_otp_service.otp_service">
        <h1>Hello world</h1>
    </div>
</templates>

现在我正在尝试在登录视图中调用此模板。请看下文:

<odoo>
  <template id="custom_login" name="Custom login" inherit_id="web.login">
    <xpath expr="//p[hasclass('alert-success')]" position="after">
        <t t-call="bulk_sms_otp_service.otp_service"/>
    </xpath>
  </template>
</odoo>

但是这个调用不起作用。给我一个错误,例如:

External id "bulk_sms_otp_service.otp_service" not found

我不知道我的代码有什么问题,或者我错了。请帮我解决这个问题。

【问题讨论】:

    标签: python-3.x odoo odoo-11 odoo-12


    【解决方案1】:

    您可以在Helpers阅读:

    在这种情况下,模板存储在数据库中(作为视图)

    可以推断出部分qweb模板没有存入数据库。

    您还可以在JS QWeb Template Engine 文档中阅读到,在每个模块清单的 qweb 条目中列出的文件中定义的模板会在 Web 客户端启动时加载。

    当 odoo 处理custom_login 模板时,它会尝试检索bulk_sms_otp_service.otp_service 模板view_id(从ir.model.data)到read 相应的模板,它会失败,因为custom_login 模板没有存储在数据库中(在ir.ui.view)。

    【讨论】:

    • 嘿,有什么办法可以做类似指令的事情吗?每当调用指令时,它都会调用相关的 javascript。就像我的指令现在是 otp 如果调用 &lt;otp&gt;&lt;/otp&gt; 它将呈现 otp 模板。并且有任何方法可以在 qweb 模板中呈现自定义视图类型或小部件。显然在网站内部不是 odoo 表单视图或其他视图。
    • 您可以创建一个widget,将模板与其关联,然后将其实例化并将其插入到DOM中或渲染模板,然后将结果附加到元素中,您可以在website_forum中找到示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多