Skip to content

Instantly share code, notes, and snippets.

@monbang
Created June 16, 2020 06:37
Show Gist options
  • Save monbang/9a1577f1b37bd36ea27bff5c4e9e8160 to your computer and use it in GitHub Desktop.
Save monbang/9a1577f1b37bd36ea27bff5c4e9e8160 to your computer and use it in GitHub Desktop.
yii validations 1
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class UserCreateForm extends Model
{
public $name;
public $username;
public $role = Role::User;
public $is_active = 1;
public $password;
public $password_confirm;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['name', 'username', 'password', 'password_confirm'], 'required'],
['username', 'filter', 'filter' => 'trim'],
['is_active', 'default', 'value' => 1],
['role', 'default', 'value' => Role::User],
[['is_active',], 'boolean'],
['role', 'in', 'range' => Role::getConstantsByName()],
[['name', 'username'], 'string', 'max' => 200],
[
'username', 'unique',
'targetAttribute' => 'username',
'targetClass' => User::class,
],
[['password', 'password_confirm'], 'string', 'min' => 5, 'max' => 255],
['password', 'match', 'pattern' => '/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', 'message' => 'Password must contain letters and numbers'],
['password', 'compare', 'compareAttribute' => 'password_confirm'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'name' => 'Name',
'username' => 'Username',
'password' => 'Password',
'password_confirm' => 'Confirm Password',
'is_active' => 'Active User',
'role' => 'Role',
];
}
public function createAccount()
{
if (!$this->validate()) {
return null;
}
$user = new User();
$user->name = $this->name;
$user->username = $this->username;
$user->is_active = 1;
$user->role = $this->role;
$user->setPassword($this->password);
$user->generateAuthKey();
return $user->save() ? $user : null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment