2017-09-12 1 views
-1

das meine ist erstellen Seite Fragen/create.phpwie zum Einfügen von Daten in zwei Tabellen, dh Mitarbeiter und Benutzer (Migration) aus einzelnen Form (Employee Create) und Controller in yii2

`

<?= $form->field($model, 'clinic_id')->dropDownList(
     ArrayHelper::map(Clinic::find()->all(),'id','clinic_name'), 
     ['prompt'=> 'Select Clinic'] 
     )?> 

<?= $form->field($model, 'first_name')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'last_name')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'user_name')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'mobile')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'is_active')->textInput() ?> 

<div class="form-group"> 
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

`

Mitarbeiter-Controller

public function actionCreate() 
{ 
    $model = new Employee(); 

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

ich habe uns gewandert Er Tabelle und auch Klasse in der Steuerung enthalten, aber die Daten nicht in der Benutzertabelle (nur in Employee Tabelle) einfügen, was wäre der mögliche Weg.

Akut in fortgeschrittenen yii2 Benutzer können von Benutzer Tabelle anmelden, so dass ich Daten von Mitarbeiter Tabelle an Benutzer Tabelle auch senden möchten.

wenn es ein anderer besserer Weg ist, so dass Mitarbeiter in

Antwort

0

Fügen Sie den folgenden Code zu Ihrer erstellen Aktion

public function actionCreate() 
{ 
    $employee = new Employee(); 
    $user = new User(); 

    if($user->load(Yii::$app->request->post()) AND $employee->load(Yii::$app->request->post()) AND Model::validateMultiple([$user, $employee])) { 
    if($user->save(false) AND $employee->save(false)) 
    { 
     return $this->redirect(['index']); 
    } 
    else{ 
     return $this->render('create', [ 
     'employee' => $employee, 'user' => $user, 
    ]); 
    } 

    } 
    else { 
    return $this->render('create', [ 
    'employee' => $employee, 'user' => $user, 
    ]); 
    } 
} 

Jetzt in Ihrem Formular schreiben Sie das Attribut und das Modell erstellt und protokolliert werden, die sind verwandt, wie zum Beispiel annehmen first_name und last_name von Employee-Modell und Passwort ans E-Mail von Benutzermodell dann

+0

Vielen Dank bro ich bin in der Lage, alle Details in der Benutzertabelle zu speichern. Mein Problem ist jetzt, dass ich nicht in der Lage bin, das Passwort im Hash-Format zu speichern, können Sie mir helfen, –

+0

Check bekommen Sie Passwort in der Steuerung? Wenn ja, generiert der obige Code den Hash-Code. Andernfalls verwende benutzerdefinierten Hash-Generierungscode wie $ user-> password = Yii :: $ app-> getSecurity() -> generatePasswordHash ($ password); $ user-> repeat_password = Yii :: $ app-> getSecurity() -> generatePasswordHash ($ password); . Schreibe diesen Code direkt über if ($ user-> save (false) AND $ employee-> save (false)) – Radhe9254

Verwandte Themen