2. 模板定义

本节我们将创建通知预订人的消息模板,包括主题和正文。

创建主题模板

在应用程序内打开 Message Templates 视图。点击 Create 按钮开始创建一个新的模板。

配置以下属性:

  • NameBooking Email Subject

  • Codebooking-email-subject。这个编码后续在代码中用于标识该模板。

  • TypePlain text

  • Content:在编辑器输入模板内容:

    Booking confirmation for ${booking.title}

保存模板

主题模板参数

Parameters tab,添加模板需要使用的参数。

按以下内容配置 booking 参数:

  • NameBooking

  • Aliasbooking

  • TypeEntity

  • EntityBooking

  • Default value:留空

参数配置完成后,运行 Preview。预览程序会使用这些值渲染模板,可以在模板正式使用前发现遗漏的参数。

当发送邮件时,应用程序会在代码中为模板提供参数值,如 在电子邮件中使用消息模板 中所述。

创建正文模板

下一步,为消息正文创建模板。点击 Create,并配置:

  • NameBooking Email Body

  • Codebooking-email-body。这个编码后续在代码中用于标识该模板。

  • TypeHTML

  • Content:用编辑器创建模板,或直接使用下面的源码。

    template body
    查看源码
    <body>
      <div style="box-sizing: border-box; max-width: 600px; margin: 32px auto; background: #ffffff; border-radius: 10px; overflow: hidden; border: 1px solid #e5e7eb;">
        <div style="box-sizing: border-box; background: #2563eb; color: #ffffff; padding: 24px;">
          <h2 style="box-sizing: border-box; margin: 0; border: 0px solid white; color: black;">
            <span style="box-sizing: border-box; border: 0px solid #fef9f9; color: #fdfdfd;">Booking confirmed</span>
          </h2>
        </div>
    
        <div style="box-sizing: border-box; padding: 24px;">
          <p style="box-sizing: border-box;">
            Hello ${booking.creator.firstName!"Guest"},
          </p>
    
          <p style="box-sizing: border-box;">
            Your booking for
            <strong style="box-sizing: border-box;">${booking.title!"booking"}</strong>
            was successful.
          </p>
    
          <div style="box-sizing: border-box; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin: 20px 0;">
            <p style="box-sizing: border-box; margin: 0 0 8px;">
              <strong style="box-sizing: border-box;">Start:</strong>
              ${booking.startDate?datetime("yyyy-MM-dd'T'HH:mm")?string.medium}
            </p>
    
            <p style="box-sizing: border-box; margin: 0 0 8px;">
              <strong style="box-sizing: border-box;">End:</strong>
              ${booking.endDate?datetime("yyyy-MM-dd'T'HH:mm")?string.medium}
            </p>
    
            <p style="box-sizing: border-box; margin: 0;">
              <strong style="box-sizing: border-box;">Booking date:</strong>
              ${today?date?string.medium}
            </p>
          </div>
    
          <p style="box-sizing: border-box;">
            Have a nice day,
          </p>
    
          <p style="box-sizing: border-box;">
            <strong style="box-sizing: border-box;">Developer team</strong><br style="box-sizing: border-box;">
            <a href="https://www.jmix.io" style="box-sizing: border-box; color: #2563eb;">www.jmix.io</a>
          </p>
        </div>
      </div>
    </body>

保存模板。

正文模板参数

Parameters tab,添加模板使用的参数。

第一个参数是 booking。由于已经在前一节创建了 Booking 实体,所以按如下配置:

  • NameBooking

  • Aliasbooking

  • TypeEntity

  • EntityBooking

  • Default value:选择一个 Booking 实例

第二个参数是 today,按如下配置:

  • NameToday

  • Aliastoday

  • TypeDate and time

  • 勾选 Default date is current 复选框。

参数配置完成后,运行 Preview。预览程序会使用这些值渲染模板,可以在模板正式使用前发现遗漏的参数。

当发送邮件时,应用程序会在代码中为模板提供参数值,如 在电子邮件中使用消息模板 中所述。