表单¶
Odoo中的表单非常强大。它们与其他应用程序直接集成,可用于许多不同的目的。
在本章中,您将了解如何:
在您的自定义主题中添加一个表单。
更改表单的操作。
通过Bootstrap变量来为表单添加样式。
默认表单¶
要在页面中添加一个表单,您可以简单地复制并粘贴由网站构建器生成的代码到您的视图中。
它应该看起来像下面这样。
<form action="/website/form/" method="post" enctype="multipart/form-data" class="o_mark_required" data-mark="*" data-pre-fill="true" data-success-mode="redirect" data-success-page="/contactus-thank-you" data-model_name="mail.mail">
<div class="s_website_form_rows row s_col_no_bgcolor">
<div class="form-group s_website_form_field col-12 s_website_form_dnone" data-name="Field">
<!-- form fields -->
</div>
</div>
</form>
操作¶
在表单标签中有一个 data-model_name
。它使您能够为您的表单定义不同的操作。
发送电子邮件(此操作默认使用)。
<form data-model_name="mail.mail">
申请工作。
<form data-model_name="hr.applicant">
创建一个客户。
<form data-model_name="res.partner">
创建一个工单。
<form data-model_name="helpdesk.ticket">
创建一个商机。
<form data-model_name="crm.lead">
创建一个任务。
<form data-model_name="project.task">
成功¶
您还可以通过 data-success-mode
定义表单提交后的操作。
将用户重定向到在 data-success-page
中定义的页面。
<form data-success-mode="redirect" data-success-page="/contactus-thank-you">
显示一条消息(在同一页上)。
<form data-success-mode="message">
您可以直接在表单标签下添加成功消息。始终添加 d-none
类以确保在表单未提交时隐藏成功消息。
<div class="s_website_form_end_message d-none">
<div class="oe_structure">
<section class="s_text_block pt64 pb64" data-snippet="s_text_block">
<div class="container">
<h2 class="text-center">This is a success!</h2>
</div>
</section>
</div>
</div>
Bootstrap变量¶
正如您已经知道的那样,网站构建器基于Bootstrap创建内容。这对于表单也是如此。下面是一些Bootstrap变量的选择,或者您可以查看 变量的完整列表<https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss>
_。
$input-padding-y: $input-btn-padding-y !default;
$input-padding-x: $input-btn-padding-x !default;
$input-font-family: $input-btn-font-family !default;
$input-font-size: $input-btn-font-size !default;
$input-font-weight: $font-weight-base !default;
$input-line-height: $input-btn-line-height !default;
$input-color: $gray-700 !default;
$input-border-color: $gray-400 !default;
$input-border-width: $input-btn-border-width !default;
$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;
$input-border-radius: $border-radius !default;
$input-focus-bg: $input-bg !default;
$input-focus-border-color: lighten($component-active-bg, 25%) !default;
$input-focus-color: $input-color !default;
$input-focus-width: $input-btn-focus-width !default;
$input-focus-box-shadow: $input-btn-focus-box-shadow !default;