Website form

   

   

   

内置模块

   

Website_form 基础模块,实现了采集信息,发送Email

   

Website_crm 使用采集的信息创建 线索 crm.lead

Website_form_project 使用采集的信息创建项目任务 project.task

Website_sale 使用采集的信息创建 客户

Website_hr_recruitment 使用采集的信息创建 应聘

   

后端

为了让 model 支持 website form,需要为 model 和相关字段 fields 增加 信息

   

Model ir.model

   

例如,为 mail 增加

<record id="mail.model_mail_mail" model="ir.model">

<field name="website_form_key">send_mail</field>

<field name="website_form_default_field_id" ref="mail.field_mail_mail__body_html" />

<field name="website_form_access">True</field>

<field name="website_form_label">Send an E-mail</field>

</record>

   

   

   

Fields ir.model.fields

   

例如,将需要在 form使用的 mail 字段 加入 白名单

<function model="ir.model.fields" name="formbuilder_whitelist">

<value>mail.mail</value>

<value eval="[

'subject',

'body_html',

'email_to',

'email_from',

'record_name',

'attachment_ids',

]"/>

</function>

   

前端

为了在 website 显示 发送邮件表单, 需要在 表单编辑器注册表 登记相关字段

   

FormEditorRegistry.add('send_mail', {

formFields: [{

type: 'char',

custom: true,

required: true,

name: 'Your Name',

}, {

type: 'tel',

custom: true,

name: 'Phone Number',

}, {

type: 'email',

modelRequired: true,

name: 'email_from',

string: 'Your Email',

}, {

type: 'char',

custom: true,

name: 'Your Company',

}, {

type: 'char',

modelRequired: true,

name: 'subject',

string: 'Subject',

}, {

type: 'text',

custom: true,

required: true,

name: 'Your Question',

}],

fields: [{

name: 'email_to',

type: 'char',

required: true,

string: _t('Recipient Email'),

defaultValue: 'info@yourcompany.example.com',

}],

});

   

FAQ

   

  • Q:登记在自定义字段的数据存在哪里?

    A:保存在 website_form_default_field_id 所指定的默认字段

   

  • Q:固定植字段

    A: 例如, Recipient Email 字段 在 FormEditorRegistry 登记为 fields

       

       

    Q:如何让自定义页面,可以拖入 block

    A: 在 模块放置 一个空的 div,名为 <div class="oe_structure" />

   

   

jeffery 2024年4月23日
标签
存档
Odoo related field 坑