ユーザ名がすでに取得されているときにアプリが検出して変更したい。実際に、ユーザが自分自身を登録すると、彼は自分の名字を入力し、ユーザ名はlastName.firstNameです。ユーザー名はすでに取得済みで、変更する方法を検出するにはどうすればよいですか?Yii2作成時にユーザ名を変更する
ありがとうございました。
ユーザ名がすでに取得されているときにアプリが検出して変更したい。実際に、ユーザが自分自身を登録すると、彼は自分の名字を入力し、ユーザ名はlastName.firstNameです。ユーザー名はすでに取得済みで、変更する方法を検出するにはどうすればよいですか?Yii2作成時にユーザ名を変更する
ありがとうございました。
あなたがbeforeValidate()
関数をオーバーライドする必要がありますので、ベローズは、私のサンプルコードです:
/**
* @inheritdoc
*/
public function beforeValidate()
{
/** your code here **/
$isExist = static::find()->where(['username' => $this->username])->count();
if($isExist){
//Count total rows with the similar username
$total = static::find()->where(['LIKE','username', "{$this->username}%"])->count();
//We will add $total + 1 to the username so we have new unique username
$this->username .= '-' . ($total+1);
}
return parent::beforeValidate();
}
ありがとうございますが、検証はSignupFormモデルで行われたと思いますか? static :: findOne()はユーザーモデルの権利ですか? –
ありがとうありがとうございます:) –
これをActiveRecordから拡張されたUserモデルファイルに追加してください –
使用するユーザモジュールとは何ですか?それはdektrium/yii2-user
モジュールですか?
保存する前にユーザーモデルクラスをオーバーライドし、beforeValidate
関数をオーバーライドしてユーザー名を検出して変更することができます。
ベンダー/ yiisoft/yii2/web/User –
でComponentを拡張するユーザー基本モデルを使用していないので、 'beforeValidate'関数をオーバーライドする必要があります。 –
私はbeforeValidateメソッドをオーバーライドしましたが、どのようにユーザー名を検出できますか? –
ですから、自動的にユーザー名を提供していますか? –
はい、そうです。ユーザーは姓と名を入力し、ユーザー名はアプリから与えられます。 –
アプリがユーザー名を決定するコードを共有することもできますか? –