2016-06-29 4 views
0

Я пытаюсь создать форму регистрации, она отлично работает, когда я не использую пароль повторения, он сохраняет модель, но когда я использую свой пароль повтора, он просто не позволяет мне сохранять их в базы данных. Мой код ниже.Yii2 Подтверждение пароля не работает

SimUser.php файл

public function rules() 
    { 
     return [ 
      [['user_email', 'user_password_hash','company_id','user_fname', 'user_lname','agree'], 'required'], 
      ['agree','required','requiredValue' => 1, 'message' => ''], 
      ['user_password_hash_repeat', 'compare','compareAttribute' => 'user_password_hash','message' => 'Password don\'t match'], 
      [['agree'],'safe'], 
      [['user_password_hash_repeat'],'safe'], 
      [['user_company', 'user_suspended', 'user_deleted'], 'integer'], 
      [['user_created'], 'safe'], 
      [['user_email'], 'string', 'max' => 255], 
      [['user_password_hash'], 'string', 'max' => 72], 
      [['user_fname', 'user_lname'], 'string', 'max' => 45], 
      [['user_auth_key'], 'string', 'max' => 32], 
      [['user_access_token'], 'string', 'max' => 100], 
     ]; 
    } 

Мои действия контроллера: сайт/регистрация

public function actionSignup() 
    { 
     $company = new Company(); 
     $company->load(Yii::$app->request->post()); 
     $company->save(); 


     $model = new SimUser(); 
     if ($model->load(Yii::$app->request->post())) { 
      $model->setPassword($model->user_password_hash); 
      $model->generateAuthKey(); 
      $model->company_id = $company->company_id; 
      //var_dump($model); exit(); 
      $model->save(); 
      $model = new LoginForm(); 
      return $this->render('login',[ 
       'model' => $model, 
      ]); 
     } 
     return $this->render('signup', [ 
      'model' => $model, 
      'company' => $company, 
     ]); 
    } 

Здесь я спасая Comany имя в модели компании, а остальные в пользователя Таблица.

Мои взгляды файл: signup.php

<h1>Sign Up</h1> 
       <?= $form->field($model, 'user_fname')->textInput(['placeholder'=>'First Name*','class'=>'form-control col-lg-4'])->label(false);?> 
       <?= $form->field($model, 'user_lname')->textInput(['placeholder'=>'Last Name*','class'=>'form-control col-lg-4'])->label(false); ?> 
       <?= $form->field($model,'user_email')->textInput(['placeholder'=>'Email*','class'=>'form-control col-lg-4'])->label(false); ?> 
       <?= $form->field($model, 'user_password_hash')->passwordInput(['placeholder'=>'Password'])->label(false); ?> 
       <?= $form->field($model, 'user_password_hash_repeat')->passwordInput(['placeholder'=>'Confirm Password*','class'=>'form-control col-lg-4'])->label(false); ?> 
       <?= $form->field($company, 'company_name')->textInput(['placeholder'=>'Company Name*','class'=>'form-control col-lg-4'])->label(false); ?> 
       <?php echo $form->field($model, 'agree')->checkbox(); ?> 
       <div class="form-group"> 
        <?= Html::submitButton('Sign Up', ['class' => 'pull-left padding-0 btn btn-success', 'name' => 'signup-button']) ?> 
       </div> 

Сообщение об ошибке для компании не идет, он всегда там .. прилагается выход как изображение click here Может кто-нибудь из вас помочь мне решить Эта проблема? Заранее спасибо!!

Company.php */

public function rules() 
{ 
    return [ 
     [['company_name'], 'required'], 
     [['company_name'], 'string', 'max' => 75], 
    ]; 
} 
+0

обеспечивают 'company' модели –

+0

Добавлена ​​compny модель на мой пост @DoubleH –

ответ

0

В контроллере сэкономили компании в самом НАЧАЛЕ. Поэтому каждый раз, когда я загружаю страницу, она сохраняет, прежде чем я могу ее отправить. Следовательно, ошибка остается такой, какая есть.

код будет изменен:

$company = new Company(); 
     $model = new SimUser(['scenario' => SimUser::SCENARIO_REGISTER]); 
     if ($model->load(Yii::$app->request->post()) && $company->load(Yii::$app->request->post())) { 

      $company->save(); 

      $model->setPassword($model->user_password_hash); 
      $model->generateAuthKey(); 
      $model->company_id = $company->company_id;    
      $model->save(); 

Так один вопрос был решен .. Невозможно решить проблему подтверждения пароля! Было бы полезно, если кто-нибудь может опубликовать, что это за ошибка?

0

О повторить пароль:

Почему вы используете безопасное правило user_password_hash_repeat? Обычно для Подтвердите пароль Поле использует некоторую функцию для соответствия ему Пароль поле. Вот как я это делаю в моих проектах:

// string in validation rules 
['passconf', 'matchPassword'] 

// rule for confirm password field 
public function matchPassword($attribute) 
{ 
    if ($this->password != $this->passconf) { 
     $this->addError($attribute, "Confirm Password doesn't match the Password"); 
    } 
} 
Смежные вопросы