2017-03-22 5 views
1

So erreichte ich den Ajax-Validierungsteil. Zuerst möchte ich sagen, dass ich die Antworten der ähnlichen Frage gelesen habe, aber es hat mir nicht geholfen. Bei der Registrierung Formular Validierung funktioniert gut (wenn ich versuche, Benutzer mit bestehenden Namen zu registrieren es zeigt mir Fehlermeldung), aber wenn ich im Benutzerprofil bin und versuche, seinen Namen mit vorhandenen zu aktualisieren passiert nichts (kein Fehler angezeigt).Ajax-Validierung erforderlich beim Aktualisieren von Benutzerinformationen yii2

Mein Modell UpdateForm.php Regeln:

public function rules() 
    { 
     return [ 
      [['email', 'password', 'username'], 'required'], 
      [['email', 'password', 'username'], 'string', 'max' => 50], 
      [['image'], 'string', 'max' => 255], 
      ['email', 'email'], 
      [[ 'email', 'username'], 'unique'], 
     ]; 
    } 

Mein Usercontroller Aktion:

public function actionUpdate() 
    { 
     $id = \Yii::$app->user->identity->id; 
     $model = $this->findModel($id); 

     if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { 
      Yii::$app->response->format = Response::FORMAT_JSON; 
      return ActiveForm::validate($model); 
     } 

     if ($model->load(Yii::$app->request->post()) && $model->save()) { 
      return $this->redirect(['view', 'id' => $model->id]); 
     } else { 
      return $this->render('update', [ 
       'model' => $model, 
      ]); 
     } 
    } 

jede Beratung schätzen!

+1

Sie verwenden das gleiche Modell und Formular für beide erstellen und aktualisieren –

+0

Vielen Dank! Ich habe mir meinen actionRegister angesehen und jetzt verstanden :) –

Antwort

0

konfigurieren yii_logger db in Ihrer Maschine (Sie können es finden Yii2 Dokumente).

dann laufen

SELECT FROM_UNIXTIME(log_time, '%Y-%m-%d') log_date, y.* FROM yii_logger y where level = 1 order by log_time desc limit 20; 

Sie können Fehler Backtrace sehen, ob Ihr Code irgendwo bricht.

Verwandte Themen