Sie müssen mein vorheriges Problem lesen, um zu verstehen, worüber ich hier spreche (Link to my problem). So wurde es gelöst.Wie Code Wiederholung in Yii2 Validatoren Methode `wann 'zu entfernen?
Aber ich habe eine Menge Felder in meiner Ansicht, die immer durch den aktuellen Benutzerwert gefüllt sind. Und es ist Codewiederholung, wenn ich nächstes tun
[['new_email'], 'unique', 'targetAttribute' => 'email', 'targetClass' => '\common\models\User',
'when' => function ($model, $attribute) {
$this->isNewEmail = false;
if($model->$attribute != User::find()->where(['id' => Yii::$app->user->id])->one()->email) {
$this->isNewEmail = true;
}
return $this->isNewEmail;
},
'message' => 'This email can not be taken.'],
Und das
[['first_name'], 'string', 'min' => 4, 'max' => 50,
'when' => function ($model, $attribute) {
$this->isNewFirstName = false;
if($model->$attribute != User::find()->where(['id' => Yii::$app->user->id])->one()->first_name) {
$this->isNewFirstName = true;
}
return $this->isNewFirstName;
},
],
und so weiter.
Was kann ich tun, um diese Codewiederholung zu entfernen? Oder gibt es irgendwo existiert Modul oder Komponente für Yii2 genau wie für diese Situation wie meins? Oder gibt es irgendwo Core Validator für mein Problem? Oder ich verdammt für immer, all diese Code-Wiederholung zu tun?)
warum machst du das nicht vor model-> validate()? bieten auch mehr von Ihnen Aktion PHP-Code –