制御と入力ルール
myFieldRulesで利用できる表示制御と6種類の入力ルールを説明します。
- 対象製品
- MyAdminPack
- 対象バージョン
- v2
制御の種類
MyFieldRulesでは、条件が一致したときに次の制御を実行できます。
| 制御 | 判定内容 | タイミング |
|---|---|---|
| 表示/非表示 | 指定した入力欄を表示または非表示にする | 入力時 |
| 必須 | 指定した各フィールドに値があることを確認する | 保存時または公開時 |
| いずれか必須 | 指定したフィールドのうち1件以上に値があることを確認する | 保存時または公開時 |
| 同時入力禁止 | 指定したフィールドのうち、値があるものが1件以下であることを確認する | 保存時または公開時 |
| 空欄必須 | 指定した各フィールドが空であることを確認する | 保存時または公開時 |
| 選択数 | 1つの複数選択フィールドの選択数を確認する | 保存時または公開時 |
| 日付前後関係 | 2つの日付または日時フィールドの前後関係を確認する | 保存時または公開時 |
ルールには制御を1件以上設定します。表示/非表示以外の制御では、既定のエラーメッセージを任意のメッセージへ変更できます。
検証タイミング
| 設定 | 検証される操作 |
|---|---|
| 保存時 | 下書きを含む、CMS管理画面からのすべての保存 |
| 公開時 | 「公開」または「日時指定」として保存する操作 |
「公開」または「日時指定」として保存するときは、保存時の制御と公開時の制御の両方が検証されます。日時指定したデータが指定日時に実際に公開されるときは、再検証されません。
表示/非表示
何を制御するか
条件が一致したときに、指定した1件以上の入力欄を表示または非表示にします。
設定項目
- 動作:表示または非表示
- 対象フィールド:1件以上
動作とエラー
入力値が変わると、条件を再評価して表示を更新します。この制御自体は保存を妨げず、エラーを表示しません。
非表示にしても入力済みの値は消去されません。非表示のフィールドに「空欄必須」の違反がある場合は、値を修正できるようにそのフィールドが表示されます。タブまたはグループ内のすべてのフィールドが非表示になると、そのタブまたはグループも非表示になります。
利用例
「外部リンクを使用する」が選択されている場合だけ、URL入力欄を表示します。
条件不一致時
条件に一致しなくなった場合、そのルールによる表示・非表示の指定は適用されません。 他に一致する表示制御ルールがなければ、入力欄は初期状態に戻ります。 「表示」の指定だけでは、条件不一致時に非表示にはなりません。
利用例
「外部リンクを使用する」が未選択の場合、URL入力欄を非表示にします。 「外部リンクを使用する」を選択すると、URL入力欄が表示されます。
注意事項
タブとグループを直接の制御対象にはできません。CMS標準で必須のフィールドを非表示にするルールは公開できません。
必須
何を判定するか
指定した各フィールドに値が入力または選択されていることを判定します。
設定項目
- 対象フィールド:1件以上
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
条件、エラー時の動作、利用例
ルールの条件が一致した場合だけ検証します。1件でも空のフィールドがあると保存を中止し、ルール名とエラーメッセージを表示します。
たとえば、「種別」が「ニュース」の場合に、公開時だけ「ニュース本文」を必須にできます。
注意事項
対象に複数のフィールドを指定すると、すべてのフィールドが個別に必須になります。いずれか1件だけを求める場合は「いずれか必須」を使用してください。CMS標準ですでに必須のフィールドを、条件付きの必須として重ねて設定することはできません。
いずれか必須
何を判定するか
指定した複数のフィールドのうち、1件以上に値があることを判定します。
設定項目
- 対象フィールド:2件以上
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
条件、エラー時の動作、利用例
ルールの条件が一致し、すべての対象フィールドが空の場合は保存を中止してエラーを表示します。
たとえば、問い合わせ先として「電話番号」または「メールアドレス」のどちらか1件以上を求める場合に使用します。
注意事項
対象フィールドをすべて「空欄必須」にするルールとは同時に成立しないため、公開時に競合エラーになります。
同時入力禁止
何を判定するか
指定した複数のフィールドのうち、値が入力されているものが1件以下であることを判定します。
設定項目
- 対象フィールド:2件以上
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
条件、エラー時の動作、利用例
ルールの条件が一致し、2件以上の対象フィールドに値がある場合は保存を中止してエラーを表示します。
たとえば、リンク先として「内部ページ」と「外部URL」を同時に指定させない場合に使用します。
注意事項
同じ対象フィールド群のうち2件以上を別の必須制御で必須にすると、公開時に競合エラーになります。
空欄必須
何を判定するか
指定した各フィールドに値がないことを判定します。
設定項目
- 対象フィールド:1件以上
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
条件、エラー時の動作、利用例
ルールの条件が一致し、対象フィールドに値が残っている場合は保存を中止してエラーを表示します。
たとえば、外部URLを使用するときに、内部ページの選択欄が空であることを求める場合に使用します。
注意事項
同じ条件で同じフィールドを必須にするルールとは競合します。CMS標準で必須のフィールドを空欄必須にはできません。
選択数
何を判定するか
1つの複数選択フィールドで選ばれている項目数が、指定範囲内であることを判定します。
設定項目
- 対象フィールド:複数選択フィールドを1件
- 最小選択数、最大選択数、またはその両方
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
最小選択数と最大選択数には0以上の整数を指定し、両方を指定する場合は最小選択数を最大選択数以下にします。
条件、エラー時の動作、利用例
ルールの条件が一致し、選択数が最小値を下回るか最大値を上回る場合は、保存を中止してエラーを表示します。
たとえば、複数選択の「関連カテゴリ」で1件以上3件以下を選択させる場合に使用します。
注意事項
対象にできるのは、チェックボックスまたは複数選択として認識されるフィールドです。カテゴリセット、タグ、アセット、関連コンテンツの選択数を検証する制御ではありません。
日付前後関係
何を判定するか
1件目の日付または日時が、2件目の日付または日時に対して指定した前後関係になっていることを判定します。
設定項目
- 1件目のフィールド:日付、日時または公開日
- 2件目のフィールド:日付、日時または公開日
- 比較方法:より前、以前、より後、以後
- 検証タイミング:保存時または公開時
- エラーメッセージ:任意
「より前」と「より後」は同じ日時を含みません。「以前」と「以後」は同じ日時を含みます。
条件、エラー時の動作、利用例
ルールの条件が一致し、2つの値が指定した前後関係を満たさない場合は、保存を中止してエラーを表示します。
たとえば、「開始日」が「終了日」以前であることを確認する場合は、1件目に開始日、2件目に終了日、比較方法に「以前」を指定します。
注意事項
どちらか一方が空の場合、この制御だけでは違反になりません。両方の入力を求める場合は、同じフィールドに必須制御も設定してください。不正な日付または日時は検証エラーになります。
エラー時の動作
保存操作の前にブラウザ上で検証し、送信後にサーバー側でも検証します。違反がある場合はデータを保存せず、該当する入力ルール名を角括弧で付けたエラーメッセージを一覧表示します。
同じフィールドに複数の公開ルールが適用される場合は、すべての違反が評価されます。
競合の確認
ルールの公開時には、同じレイアウトで同時に成立し得る公開ルールとの競合を確認します。次のような組み合わせはエラーになり、公開できません。
- 同じフィールドを表示と非表示の両方にする
- 同じフィールドを必須と空欄必須の両方にする
- 選択数の範囲が重ならない
- 同じ2つの日付に矛盾する前後関係を指定する
- 「いずれか必須」の全フィールドを空欄必須にする
- 「同時入力禁止」の対象から2件以上を必須にする
- CMS標準の必須フィールドを非表示または空欄必須にする
同じ内容の制御を重ねて指定した場合は警告になります。警告は公開を妨げませんが、意図した重複か確認してください。
制限事項
- 入力ルールはCMS管理画面の通常の保存経路で動作します。再構築処理では検証しません。
- 日時指定公開の実行時には再検証しません。
- 非表示になったフィールドの値は自動的に削除されません。
- 公開済みデータ全体をルールに照らして検査する機能はありません。
