這不會起作用,因爲您將始終從textField
收到string
。我想,你想讓用戶輸入類似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;
}
}
}
您可能需要調整驗證邏輯一點點。但它應該給你一些想法。
Harti ...感謝您的快速回復。兄弟在視圖中我已經把textfield放在d foreach中。所以在控制器中,我將以數組[pos]的形式檢索它。希望你明白。 – 2013-03-20 19:01:01
即使在這種情況下,您也可以編寫自定義驗證器。您應該可以修改我的示例以使用'$ attribute'作爲數組。我們不能在這裏做你的工作;) – 2013-03-21 08:58:47