Php 整数验证的ctypevalidator数组

Php 整数验证的ctypevalidator数组,php,yii,Php,Yii,如何在模型类中验证整数数组 模型类 数组('marks\u Mark','CTypeValidator','type'=>'array') marks\u Mark是一个数组 查看 echo$form->textField($model,'marks_-Mark[]),array('value'=>$value->marks_-Mark,'size'=>10,'maxlength'=>3)) 下一步如何进行?这将不起作用,因为您将始终从文本字段收到字符串。我想,您希望让用户输入类似于1、2、3的

如何在模型类中验证整数数组

模型类

数组('marks\u Mark','CTypeValidator','type'=>'array')

marks\u Mark是一个数组

查看

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


下一步如何进行?

这将不起作用,因为您将始终从
文本字段收到
字符串。我想,您希望让用户输入类似于
1、2、3
的内容,然后检查这些值是否都是整数,对吗

您可以使用常规文本字段,如:

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

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

Harti。。。谢谢你的快速回复。兄弟,我把文本字段放在了d foreach里面。所以在控制器中,我将像数组[pos]一样检索它。希望您理解。即使在这种情况下,您也可以编写自定义验证程序。您应该能够修改我的示例,以使用
$attribute
作为数组。我们不能在这里做你的工作;)
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;
        }
    }
 }