0

モデルクラスの整数の配列を検証する方法は?

モデルクラス

array('marks_Mark'、'CTypeValidator'、'type' =>'array')

mark_Markは配列です。

見る

echo $ form-> textField($ model、'marks_Mark []'、array('value' => $ value-> marks_Mark、'size' => 10、'maxlength' => 3));

次に進む方法は?

4

1 に答える 1

0

stringから常にを受け取るため、これは機能しませんtextField1, 2, 3ユーザーに次のようなものを入力させてから、これらの値のそれぞれが整数であるかどうかを確認したいと思いますよね?

次のような通常のテキストフィールドを使用できます。

<?php echo $form->textField($model, 'marks') ?>

次に、カスタムバリデーターを作成します。

array('marks', 'validateIntegerList')

public function validateIntegerList($attribute, $params)
{
    $message = isset($params['message']) ? 
        $params['message'] : 'Please only enter integers!';

    $value = $this->$attribute;

    // User entered single number -> OK
    if(ctype_digit(trim($value)) && strpos($value, ',')===false)
        return;

    // User entered list of numbers -> Check each
    foreach( explode(',', $this->$attribute) as $value) {
        if(!ctype_digit(trim($value))) {
            $this->addError($attribute, $message);
            return;
        }
    }
 }

検証ロジックを少し調整する必要があるかもしれません。しかし、それはあなたにいくつかのアイデアを与えるはずです。

于 2013-03-20T07:48:28.187 に答える