forked from kuafuRace/phprap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProfileForm.php
More file actions
102 lines (83 loc) · 2.49 KB
/
Copy pathProfileForm.php
File metadata and controls
102 lines (83 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
namespace app\models\account;
use Yii;
use app\models\Account;
class ProfileForm extends Account
{
public $password; // 登录密码
/**
* 验证规则
* @return array
*/
public function rules()
{
return [
[['name', 'email'], 'filter', 'filter' => 'trim'],
[['status'], 'integer'],
['name', 'required', 'message' => '用户昵称不可以为空'],
['name', 'string', 'min' => 2, 'max' => 50, 'message' => '用户昵称至少包含2个字符,最多50个字符'],
['email', 'required', 'message' => '登录邮箱不能为空'],
['email', 'email','message' => '邮箱格式不合法'],
['email', 'validateEmail'],
['password', 'required', 'message' => '登录密码不可以为空', 'on' => 'home'],
['password', 'validatePassword', 'on' => 'home'],
];
}
/**
* 字段字典
*/
public function attributeLabels()
{
return parent::attributeLabels() + ['password' => '登录密码'];
}
/**
* 验证登录邮箱是否唯一
* @param $attribute
*/
public function validateEmail($attribute)
{
$query = self::find();
$query->andFilterWhere([
'email' => $this->email,
]);
$query->andFilterWhere([
'<>','id', $this->id,
]);
if($query->exists()){
$this->addError($attribute, '抱歉,该邮箱已被注册');
return false;
}
}
/**
* 验证密码是否正确
* @param $attribute
*/
public function validatePassword($attribute)
{
$account = Account::findModel($this->id);
if(!$account->id || !$account->validatePassword($this->password)) {
$this->addError($attribute, '登录密码验证失败');
return false;
}
}
public function store()
{
if (!$this->validate()) {
return false;
}
// 开启事务
$transaction = Yii::$app->db->beginTransaction();
$account = &$this;
$account->name = $this->name;
$account->email = $this->email;
$account->updated_at = date('Y-m-d H:i:s');
if(!$account->save()) {
$this->addError($account->getErrorLabel(), $account->getErrorMessage());
$transaction->rollBack();
return false;
}
// 事务提交
$transaction->commit();
return true;
}
}