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

Здесь я сохраняю название компании в модели компании, а остальные — в пользовательской таблице.

Файл с моими представлениями: 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>

Сообщение об ошибке для компании не отправляется, оно всегда там. img src="https://i.stack.imgur.com/fFzwi.png" alt="нажмите здесь"> Может ли кто-нибудь из вас помочь мне решить эту проблему? Заранее спасибо!!

Company.php */

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

person Mohan Prasad    schedule 29.06.2016    source источник
comment
предоставить Company модель   -  person Double H    schedule 29.06.2016
comment
Добавил модель компании в мой пост @DoubleH   -  person Mohan Prasad    schedule 29.06.2016


Ответы (1)


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

Код, который нужно изменить:

$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();

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

person Mohan Prasad    schedule 29.06.2016