yii2中的用户注册?

yii2中的用户注册?,yii2,Yii2,我得到以下异常 PHP致命错误–yii\base\ErrorException 超过最大执行时间60秒 在您的用户模型中,您应该将函数名save()与另一个名称(例如saveUser)合并,这样内部$User->save()就不会调用它,这是一个用于保存的普通ActiveRecord函数 调用User->save()会生成一个无限嵌套循环 ..... public function saveUser($runValidation = true, $attributeNames = nul

我得到以下异常

PHP致命错误–yii\base\ErrorException

超过最大执行时间60秒


在您的用户模型中,您应该将函数名save()与另一个名称(例如saveUser)合并,这样内部$User->save()就不会调用它,这是一个用于保存的普通ActiveRecord函数

调用User->save()会生成一个无限嵌套循环

  .....
  public function saveUser($runValidation = true, $attributeNames = null)
    {
        $user = new Users();
        $user->username = $this->username;
        $user->email = $this->email;
        $user->setPassword($this->password);
        $user->generateAuthKey();

        if ($user->save()) {
            $this->id = $user->id;
            return true;
        }

    }
    ...
在控制器操作中,例如:Action Create,您应该调用$user->saveUser(…)


这是用户代码模型吗?如果是这样,为什么要创建新的用户实例并再次调用save?这将创建无限递归,导致您提到的错误。请帮助我!请向我们提供有关此错误的更多信息或您想做什么第一条评论完全符合您的要求,即帮助。请仔细阅读并修复您的错误。答案已经给出。这将肯定有助于内递归,但从体系结构的角度来看,这不是一种很好的实现方法。如果您不遵循所使用的设计模式背后的原则,那么代码将更难理解和维护。如果需要,ActiveRecord应该保存自身及其相关模型。它不应该创建自己的新实例。创建和保存模型的新实例将意味着在保存过程中不会更新原始模型。这可能导致意外行为。例如,
$model->isNewRecord
调用
saveUser()
后仍将返回true。
  .....
  public function saveUser($runValidation = true, $attributeNames = null)
    {
        $user = new Users();
        $user->username = $this->username;
        $user->email = $this->email;
        $user->setPassword($this->password);
        $user->generateAuthKey();

        if ($user->save()) {
            $this->id = $user->id;
            return true;
        }

    }
    ...
*/
public function actionCreateForCatone2()
{
   ....

    $user->saveUser(...);
   ...
}