検証フックを使用すると、フィールドに適切な値が含まれていることを確認できます。検証フックは、あらかじめ定義された時に呼び出されて、フィールドの内容が有効であることを確認します。レコードに、無効な値が入ったフィールドが含まれている場合、そのレコードは、エラーが訂正されるまで、データベースにコミットされません。
個々のフィールドの検証にフックを使用する利点は (アクション検証フックを使用してレコード全体を検証することとは対照的に)、フィールド値が無効の場合に、ユーザーに直ちに通知されることです。
フィールド検証フックは、文字列値を戻す関数として作成されます。関数の戻り値は、エラー メッセージと見なされます。戻り値が空の文字列の場合、フィールド値は、有効と見なされます。
次の例では、10 文字未満の文字がフィールドに入力されると、検証フックが入力を拒否して、少なくとも 10 文字を入力するようにユーザーに強制します。
Function word_Validation(fieldname) ' fieldname As String ' word_Validation As String ' entityDef = puzzle_words Dim val val = GetFieldValue(fieldname).GetValue() If Len(val) < 10 Then word_Validation = "All words must be at least 10 letters long" End If End Function
sub word_Validation { my($fieldname) = @_; # $fieldname as string scalar # $result as string scalar # $entityDef = puzzle_words my($value); $value = $entity->GetFieldValue($fieldname)->GetValue(); if (length ($value) < 10) { $result = "All words must be at least 10 letters long"; } return $result; }