SignupForm.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2017-03-15 21:16
  7. */
  8. namespace frontend\models\form;
  9. use Yii;
  10. use common\models\User;
  11. use yii\base\Model;
  12. /**
  13. * Signup form
  14. */
  15. class SignupForm extends Model
  16. {
  17. public $username;
  18. public $email;
  19. public $password;
  20. /**
  21. * @inheritdoc
  22. */
  23. public function rules()
  24. {
  25. return [
  26. ['username', 'filter', 'filter' => 'trim'],
  27. ['username', 'required'],
  28. [
  29. 'username',
  30. 'unique',
  31. 'targetClass' => User::className(),
  32. 'message' => Yii::t('frontend', 'This username has already been taken')
  33. ],
  34. ['username', 'string', 'min' => 2, 'max' => 255],
  35. ['email', 'filter', 'filter' => 'trim'],
  36. ['email', 'required'],
  37. ['email', 'email'],
  38. ['email', 'string', 'max' => 255],
  39. [
  40. 'email',
  41. 'unique',
  42. 'targetClass' => User::className(),
  43. 'message' => Yii::t('frontend', 'This email address has already been taken')
  44. ],
  45. ['password', 'required'],
  46. ['password', 'string', 'min' => 6],
  47. ];
  48. }
  49. /**
  50. * @inheritdoc
  51. */
  52. public function attributeLabels()
  53. {
  54. return [
  55. 'username' => Yii::t('app', 'Username'),
  56. 'email' => Yii::t('app', 'Email'),
  57. 'old_password' => Yii::t('app', 'Old Password'),
  58. 'password' => Yii::t('app', 'Password'),
  59. 'repassword' => Yii::t('app', 'Repeat Password'),
  60. 'avatar' => Yii::t('app', 'Avatar'),
  61. 'created_at' => Yii::t('app', 'Created At'),
  62. 'updated_at' => Yii::t('app', 'Updated At'),
  63. 'rememberMe' => Yii::t('frontend', 'Remember Me'),
  64. ];
  65. }
  66. /**
  67. * Signs user up.
  68. *
  69. * @return User|null the saved model or null if saving fails
  70. * @throws \yii\base\Exception
  71. */
  72. public function signup()
  73. {
  74. if (! $this->validate()) {
  75. return null;
  76. }
  77. $user = new User();
  78. $user->username = $this->username;
  79. $user->email = $this->email;
  80. $user->setPassword($this->password);
  81. $user->generateAuthKey();
  82. return $user->save() ? $user : null;
  83. }
  84. }