表单

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> _。

/website_airproof/static/src/scss/bootstrap_overridden.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;