ctypevalidator整数验证数组

时间:2013-03-20 07:20:07

标签: php yii

如何验证模型类中的整数数组?

模型类

  

数组(' marks_Mark',' CTypeValidator',' type' =>' array')

marks_Mark是一个数组。

查看

  

echo $ form-> textField($ model,' marks_Mark []',array(' value' => $ value-> marks_Mark,'大小&#39 =大于10,'最大长度' =→3));

下一步如何进行?

1 个答案:

答案 0 :(得分:0)

这不起作用,因为您始终会从string收到textField。我想,您想让用户输入类似1, 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;
        }
    }
 }

您可能需要稍微调整一下验证逻辑。但它应该给你一些想法。