A-Formのデザインカスタマイズ:必須入力項目を目立たせよう

この記事は A-Form Advent Calendar 2019 参加記事です。

ドキュメントに掲載しそびれていた小ネタを紹介します。
入力画面で「必須かどうか」を判定する「is_necessary」があります。

<mt:loop name="fields"> の中であれば


<mt:if name="is_necessary">(必須の場合表示)</mt:If>

というように使用できます。

テンプレート記述例

このis_necessaryを入力画面のテンプレート(aform_form.tmpl)で下記のように使うと、
必須入力項目だけにclassをつけることができます。


<mt:else><mt:Ignore>&lt;!-- 見出し, コメント・注釈パーツ以外 --&gt;</mt:Ignore>
<dl class="dl_<mt:var name="parts_id" escape="html"><mt:if name="is_necessary"> necessary</mt:If>"> ★←ココ
  <dt><mt:AFormFieldLabel aform_id="$aform_id" parts_id="$parts_id">
  <mt:AFormFieldValidation aform_id="$aform_id" parts_id="$parts_id"></dt>
  <dd><mt:AFormFieldInputExample aform_id="$aform_id" parts_id="$parts_id">
      <mt:AFormFieldInput aform_id="$aform_id" parts_id="$parts_id">
      <mt:AFormFieldError aform_id="$aform_id" parts_id="$parts_id"></dd>
</dl>

CSS記述例


.aform-content dl {
    margin: 0.125em 0;
    padding: 0.5em 0;
    display: flex;
    border-bottom: 1px dotted #ccc;
}
.aform-content dl dt {
    font-weight: bold;
    width: 35%;
    border-right: 5px solid #ccc;
    margin-right: 2.5%;
    background: #f0f0f0;
    padding: 10px;
}
.aform-content dl dd {
    margin: 0 0 0.5em;
    width: 65%;
}
.aform-content dl.necessary dt {
    border-right-color: #D92B00;
}

表示例

色面積が増えると、わかりやすくなりますね。
お試しください!