2017-09-12 9 views
-1

단일 양식에서 사용자 (마이그레이션) (직원이 작성)와 컨트롤러가이 페이지를 질문을 내을 만들 수있다 즉삽입하는 방법을 데이터/create.php 직원 및 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(); ?> 

직원 컨트롤러

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, 
     ]); 
    } 
} 

나는 우리를 마이그레이션 한`

er 테이블과 컨트롤러에 클래스도 포함되어 있지만 데이터는 사용자 테이블 (Employee 테이블에서만)에 삽입되지 않습니다. 가능한 방법은 무엇입니까?

진보 된 yii2 사용자는 사용자 테이블에서 로그인 할 수 있으므로 직원 테이블의 데이터를 사용자 테이블에도 보낼 수 있습니다.

그 직원이 양식에

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, 
    ]); 
    } 
} 

이제 만들 행동에 다음 코드를 추가 속성 및 모델을 쓰기 생성

답변

0

에 기록 될 수 있도록 다른 더 좋은 방법이 있다면 어떤 사용자 모델에서 first_name과 last_name을 가정하고 사용자 모델의 전자 메일과 비밀번호를 가정하면

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

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

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

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

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

감사합니다. 사용자 테이블에 모든 세부 정보를 저장할 수 있습니다. 내 문제는 지금 내가 해시 형식으로 암호를 저장할 수 없다는 것입니다, 나를 도와 줄 수 있습니다 –

+0

확인은 컨트롤러에서 암호를 얻는거야 ?? 그렇다면 위의 코드는 해시 코드를 생성합니다. 그렇지 않으면 사용자 정의 해시를 사용하여 $ user-> password = Yii :: $ app-> getSecurity() -> generatePasswordHash ($ password)와 같은 코드를 생성합니다. $ user-> repeat_password = Yii :: $ app-> getSecurity() -> generatePasswordHash ($ password); . if ($ user-> save (false) AND $ employee-> save (false)) 바로 위에이 코드를 작성하십시오. – Radhe9254