count():参数必须是在Yii2中实现Countable的数组或对象

时间:2018-08-22 10:54:45

标签: php yii2 xampp

我在验证用户中使用xammp v3.2.2 时出现了此错误:

count(): Parameter must be an array or an object that implements Countable

我不知道此错误取决于xampp,yii2或php v7.2.3。

in C:\xampp\htdocs\payesh\vendor\yiisoft\yii2\validators\UniqueValidator.php at line 136

        if ($this->modelExists($targetClass, $conditions, $model)) {
            if (count($targetAttribute) > 1) { //error mentions here
                $this->addComboNotUniqueError($model, $attribute);
            } else {
                $this->addError($model, $attribute, $this->message);
            }
        }
    }

这是我的用户模型:

public function signup() {
     if ($this->validate()) { // the error mentions here too
            $user = new User();
            $user->username = $this->email;
            $user->email = $this->email;
     if ($user->save(false)) {
                return $user;
    }
    }

此错误页面图片可能有助于您更好地理解:

fist part of error

错误页面的其余部分:

rest of error page

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要升级到Yii2的最新版本(至少为2.0.13)-在2.0 13版本中与PHP 7.2的兼容性得到了显着改善,请参见this PR

但是通常,如果您使用的是最新版本的PHP,则应使用Yii的最新版本-使用过时的框架版本和最新的PHP版本可能会带来很多问题。尤其是PHP 7.2带来了许多BC中断,并且在此版本中有很多事情被破坏。