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