Почему я не могу использовать CDATA в теле почтового шаблона в Odoo 11? - PullRequest
3 голосов
/ 27 марта 2019

Я пытался создать новый шаблон электронной почты для счетов. Что я сделал, так это скопировал весь существующий шаблон электронной почты для счетов (xml id: email_template_edi_invoice), кроме поля body_html. И вот проблема:

Если я введу body_html с помощью CDATA, я получу следующую ошибку подтверждения:

Element odoo has extra content: data, line 6

Однако, если я не использую его, он работает. Я упростил содержание body_html, но проблема все еще существует.

Работает следующий шаблон электронной почты:

<?xml version="1.0" ?>
<odoo>

    <data>
        <!--Email template -->
        <record id="email_template_edi_invoice_v8" model="mail.template">
            <field name="name">Invoicing: Invoice email v8.0</field>
            <field name="email_from">${(object.user_id.email and '&quot;%s&quot; &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
            <field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a'})</field>
            <field name="partner_to">${object.partner_id.id}</field>
            <field name="model_id" ref="account.model_account_invoice"/>
            <field name="auto_delete" eval="True"/>
            <field name="report_template" ref="account.account_invoices"/>
            <field name="report_name">Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}</field>
            <field name="lang">${object.partner_id.lang}</field>
            <field name="body_html" type="html">
<div>
Hola
</div></field>
        </record>

    </data>
</odoo>

Следующий шаблон электронной почты не работает (выдает ошибку дополнительного содержимого):

<?xml version="1.0" ?>
<odoo>

    <data>
        <!--Email template -->
        <record id="email_template_edi_invoice_v8" model="mail.template">
            <field name="name">Invoicing: Invoice email v8.0</field>
            <field name="email_from">${(object.user_id.email and '&quot;%s&quot; &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
            <field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a'})</field>
            <field name="partner_to">${object.partner_id.id}</field>
            <field name="model_id" ref="account.model_account_invoice"/>
            <field name="auto_delete" eval="True"/>
            <field name="report_template" ref="account.account_invoices"/>
            <field name="report_name">Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}</field>
            <field name="lang">${object.partner_id.lang}</field>
            <field name="body_html" type="html"><![CDATA[
<div>
Hola
</div>]]></field>
        </record>

    </data>
</odoo>

Может ли кто-нибудь, кто сталкивался с этой проблемой, подсказать мне, что происходит?

1 Ответ

2 голосов
/ 28 марта 2019

В противном случае выглядит корректно, но атрибут type=”html” может вызвать вашу ошибку. Попробуй без этого вот так

  ...
  <field name="body_html"><![CDATA[
  ...
...