nolotion, просто в yii2 basic нет готовой модели User и миграции таблицы user.
Там пользователи определены статическим методом
class User extends \yii\base\BaseObject implements \yii\web\IdentityInterface
{
public $id;
public $username;
public $password;
public $authKey;
public $accessToken;
private static $users = [
'100' => [
'id' => '100',
'username' => 'admin',
'password' => 'admin',
'authKey' => 'test100key',
'accessToken' => '100-token',
],
'101' => [
'id' => '101',
'username' => 'demo',
'password' => 'demo',
'authKey' => 'test101key',
'accessToken' => '101-token',
],
];
в advanced есть миграций и удобно программировать регистрацию пользователей.
Менять основную модель user в basic испугался, создал миграцию для user взяв за основу из таблицы user
и создал новую модель UserBase, соответсвенно форму для регистрации RegistrationForm
Ну при заполнений формы понял, что моя форма не заполняет данные created_at и updated_at для таблицы user.
Просмотрев структуру модели User как в basic, так и advanced не увидел как происходит заполенние объектов
created_at и updated_at, наверное они заполняются где то в родительском классе.
И соответсвенно мне пришлось прописать заполнение объектов в ручную
class RegistrationForm extends Model
{
public $username;
public $email;
public $password;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['username', 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => 'app\models\UserBasic', 'message' => 'Данный логин уже используется! Придумайте новый!'],
['username', 'string', 'min' => 2, 'max' => 255],
['email', 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'string', 'max' => 255],
['email', 'unique', 'targetClass' => 'app\models\UserBasic', 'message' => 'Данный e-mail, уже используется! Придумайте новый!'],
['password', 'required'],
['password', 'string', 'min' => Yii::$app->params['user.passwordMinLength']],
];
}
/**
* Signs user up.
*
* @return bool whether the creating new account was successful and email was sent
*/
public function signup()
{
if (!$this->validate()) {
return null;
}
$date = new DateTimeImmutable(date('Y-m-d H:i:s')); // устанавливаем необходимую дату
$user = new \app\models\UserBasic();
$user->username = $this->username;
$user->email = $this->email;
$user->password_hash=Yii::$app->security->generatePasswordHash($this->password);
$user->auth_key= Yii::$app->security->generateRandomString();
$user->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
$user->created_at= $date->getTimestamp();
$user->updated_at= $date->getTimestamp();
return $user->save();
}
}
что-то подсказывает, что я иду в неверном направлений!