有没有办法在Yii模型的rules()
方法中要求一组元素?
例如:
public function rules()
{
return array(
array('question[0],question[1],...,question[k]','require'),
);
}
我一直在遇到需要验证多个元素数组的情况
来自一个表格,除了做上述之外,我似乎无法找到一个好的方法。指定attributeLables()
时遇到同样的问题。如果有人有一些建议或更好的方法,我会非常感激。
答案 0 :(得分:13)
您可以使用CTypeValidator
type
别名
public function rules()
{
return array(
array('question','type','type'=>'array','allowEmpty'=>false),
);
}
答案 1 :(得分:2)
使用array('question','type','type'=>'array','allowEmpty'=>false),
,您只需验证是否收到了完整的数组,但您不知道此数组中的内容。要验证数组元素,您应该执行以下操作:
<?php
class TestForm extends CFormModel
{
public $ids;
public function rules()
{
return [
['ids', 'arrayOfInt', 'allowEmpty' => false],
];
}
public function arrayOfInt($attributeName, $params)
{
$allowEmpty = false;
if (isset($params['allowEmpty']) and is_bool($params['allowEmpty'])) {
$allowEmpty = $params['allowEmpty'];
}
if (!is_array($this->$attributeName)) {
$this->addError($attributeName, "$attributeName must be array.");
}
if (empty($this->$attributeName) and !$allowEmpty) {
$this->addError($attributeName, "$attributeName cannot be empty array.");
}
foreach ($this->$attributeName as $key => $value) {
if (!is_int($value)) {
$this->addError($attributeName, "$attributeName contains invalid value: $value.");
}
}
}
}