0

モデル User には、このフィールドがあります。

 $this->addField('login')->mandatory(true)->caption('Login')->length(10);

しかし、10 文字を超えるテキストを入力すると、検証は行われず、フィールドの下に「テキストが長すぎます」という赤いメッセージが表示されることはありません。

アジャイル ツールキット 4.2.4 でこれを行うにはどうすればよいですか?? 私は基本的な何かが恋しいですか?

アドバイスありがとう!!

4

1 に答える 1

2

フィールドクラスの長さ()メソッドの説明で述べたように:

 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によって作成された検証アドオンもチェックしてください。それは非常に強力でなければなりません。

于 2014-01-28T22:19:25.797 に答える