Model
<?php
namespace app\models\user\forms;
use Yii;
use yii\base\Model;
use app\models\user\User;
class RegisterForm extends Model
{
public $firstname;
public $lastname;
public $email;
public $email_repeat;
public $password;
public $password_repeat;
public function rules()
{
return [
[['firstname', 'lastname', 'email', 'email_repeat', 'password', 'password_repeat'], 'required'],
[['firstname', 'lastname','email', 'email_repeat', 'password', 'password_repeat'], 'trim'],
[['firstname', 'lastname'], 'string', 'min'=>2, 'max'=>20],
[['password'], 'string', 'min'=>6, 'max' => 12],
[['password_repeat'], 'compare', 'compareAttribute'=>'password', 'message'=>"Password dont match"],
[['email_repeat'], 'compare', 'compareAttribute'=>'email', 'message'=>"Email dont match"],
[['email'], 'email'],
[['email'], 'checkUniqueEmail']
];
}
public function register()
{
// $firstname, $lastname, $email, $password
$user = new User();
$user->firstname = $this->firstname;
$user->lastname = $this->lastname;
$user->email = $this->email;
$user->password = $user->setPassword($this->password);
$user->auth_key = $user->generateToken();
$user->email_token = $user->generateToken();
$user->status = User::USER_INACTIVE;
$user->created_at = time();
$user->updated_at = time();
return $user->save();
}
public function checkUniqueEmail($attribute, $params)
{
$email = User::find()->where(['email'=> $this->email])->one();
if ($email)
{
$this->addError($attribute, 'email exists');
return false;
}
}
}
Controller
public function actionTest()
{
$model = new RegisterForm();
if($model->load(Yii::$app->request->post()))
{
if ($model->validate())
{
$model->register();
}
}
return $this->render('test',[
'model' => $model,
]);
}
View
use yii\helpers\Html;
<?= Html::beginForm(['site/test'], 'post', ['enctype' => 'multipart/form-data', 'class' => 'reg-fr']) ?>
<?= Html::input('text', 'RegisterForm[firstname]', null, ['class' => 'tes']) ?>
<?= Html::error($model, 'firstname') ?>
<?= Html::input('text', 'RegisterForm[lastname]', null, ['class' => 'hello']) ?>
<?= Html::error($model, 'lastname') ?>
<?= Html::input('text', 'RegisterForm[email]', null, ['class' => 'hello']) ?>
<?= Html::error($model, 'email') ?>
<?= Html::input('text', 'RegisterForm[email_repeat]', null, ['class' => 'hello']) ?>
<?= Html::error($model, 'email_repeat') ?>
<?= Html::input('text', 'RegisterForm[password]', null, ['class' => 'hello']) ?>
<?= Html::error($model, 'password') ?>
<?= Html::input('text', 'RegisterForm[password_repeat]', null, ['class' => 'hello']) ?>
<?= Html::error($model, 'password_repeat') ?>
<input type="submit" value="send">
<?= Html::endForm() ?>