如何验证模型类中的整数数组?
模型类
array('marks_Mark','CTypeValidator','type'=>'array')
标记_标记是一个数组。
看法
echo $form->textField($model,'marks_Mark[]',array('value'=>$value->marks_Mark,'size'=>10,'maxlength'=>3));
接下来如何进行?
这将不起作用,因为您将始终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;
}
}
}
您可能需要稍微调整验证逻辑。但它应该给你一些想法。