Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii2覆盖模型法_Php_Yii2 - Fatal编程技术网

Php yii2覆盖模型法

Php yii2覆盖模型法,php,yii2,Php,Yii2,我正在尝试在Yii2上创建一个简单的项目。现在我正在创建用户功能。我已经用Gii创建了用户模型和CRUD。当我创建新用户或编辑时,模型以纯文本形式保存密码。我想覆盖此功能,以便能够以md5格式保存密码 在Zend框架中也有类似的能力。 我有密码字段,当我想更改默认设置密码行为时,我只是在模型中创建了setPassword方法。 Yii2的正确方式是什么 在我的User.php模型类中,我创建了setPassword($password)方法,但它没有被执行(我将var_dump放入其中进行检查)

我正在尝试在Yii2上创建一个简单的项目。现在我正在创建用户功能。我已经用Gii创建了用户模型和CRUD。当我创建新用户或编辑时,模型以纯文本形式保存密码。我想覆盖此功能,以便能够以md5格式保存密码

在Zend框架中也有类似的能力。 我有密码字段,当我想更改默认设置密码行为时,我只是在模型中创建了setPassword方法。 Yii2的正确方式是什么


在我的User.php模型类中,我创建了setPassword($password)方法,但它没有被执行(我将var_dump放入其中进行检查)。

您可以在保存之前实现
方法,并加密密码

或者,您可以在调用
$model->save()

之前,在控制器中的
actionCreate
方法中执行此操作,方法基于:

  • 模型负责创建新的用户模型
  • 运行此进程的控制器是具有操作的SiteController-当SignupForm正确地
    load()
    -调用SignupForm中的方法
    signup()
  • 当数据更新时,初始化用户类的新实例
  • 通过调用
    $user->setPassword($this->password)设置新密码
    -
    $this->password
    是用户选择的原始纯文本密码
  • 方法设置基于纯文本密码生成的
    password\u hash
    属性-此哈希密码存储在数据库中
  • 您可以通过修改
    setPassword()
    (但不建议这样做)来更改密码散列的方式

  • 检查这是如何完成的。我想了解它是如何工作的,我不需要它完成,只是理解