数组的Yii2验证规则

时间:2016-09-12 11:52:47

标签: php yii2

我在模型中有一个属性,我想以这样的方式验证 - 它必须是一个数组,并且必须有3个元素,数组中的每个元素也必须是一个字符串。目前我正在使用。

['config', 'each', 'rule' => ['string']]

2 个答案:

答案 0 :(得分:0)

您可以简单地使用自定义验证器,例如:

['config', function ($attribute, $params) {
    if(!is_array($this->$attribute) || count($this->$attribute)!==3){
         $this->addError($attribute, 'Error message');
    }
}],
['config', 'each', 'rule' => ['string']]

详细了解creating validators

答案 1 :(得分:0)

您可以添加custom validation规则,如下所示:

public function rules()
{
    return  ['config','checkIsArray'];
}

public function checkIsArray($attribute, $params)
{
    if (empty($this->config)) {
        $this->addError('config', "config cannot be empty");
    }
    elseif (!is_array($this->config)) {
        $this->addError('config', "config must be array.");
    }
    elseif (count($this->config)<3) {
        $this->addError('config', "config must have 3 elements");
    }
    else {
        foreach ($this->config as $value) {
            if (!is_string($value)) {
                $this->addError('config ', "config should have only string values.");
            }
        }
    }
}