検証フックを使用すると、フィールドに適切な値が含まれていることを確認できます。検証フックは、あらかじめ定義された時に呼び出されて、フィールドの内容が有効であることを確認します。レコードに、無効な値が入ったフィールドが含まれている場合、そのレコードは、エラーが訂正されるまで、データベースにコミットされません。
個々のフィールドの検証にフックを使用する利点は (アクション検証フックを使用してレコード全体を検証することとは対照的に)、フィールド値が無効の場合に、ユーザーに直ちに通知されることです。
フィールド検証フックは、文字列値を戻す関数として作成されます。関数の戻り値は、エラー メッセージと見なされます。戻り値が空の文字列の場合、フィールド値は、有効と見なされます。
次の例では、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;
}