0

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

模型类

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

标记_标记是一个数组。

看法

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

接下来如何进行?

4

1 回答 1

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;
        }
    }
 }

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

于 2013-03-20T07:48:28.187 回答