フィールドクラスの長さ()メソッドの説明で述べたように:
This will provide a HTML settings on a field for maximum field size.
The length of a field will not be enforced by this setting.
...
Field->length($n) 自体は検証を行いません。これはフォーム フィールドの表示目的のためだけに存在し、次のような独自の検証クラスのどこかでこの値を使用することもできます。
// In model class file init method
$model->addHook('beforeSave', array($this, 'customValidation'));
// In model class file
function customValidation() {
foreach ($this->getActualFields() as $f) {
$field = $this->getField($f);
if ($field->length && strlen($this[$f]) > $field->length) {
throw $this->exception('Field value to long', 'Exception_ValidityCheck')
->addMoreInfo('field', $f)
->addMoreInfo('value', $this[$f])
->addMoreInfo('limit', $field->length);
}
}
}
上記のコードは完全にテストされていません。フォーム送信フックでフィールド値の長さを検証することもできますが、それは正確ではありません。モデルでこれを行うことをお勧めします。
Romans https://github.com/romaninsh/validationによって作成された検証アドオンもチェックしてください。それは非常に強力でなければなりません。