1

我正在为 yii2 recaptcha 使用扩展himiklab,它类似于 google 的。我想在我的规则中将此字段设置为必填字段。当我将其设置如下时,即使我不单击复选框,它也不会验证。

  [['reCaptcha'], 'required'],
      ['reCaptcha', \himiklab\yii2\recaptcha\ReCaptchaValidator::className(), 'secret' => '***','skipOnEmpty' => false],

看法

<?= $form->field($model, 'reCaptcha')->widget(
    \himiklab\yii2\recaptcha\ReCaptcha::className(),
    ['siteKey' => '6LeY1BAUAAAAALThRhBQ-sJaXbP0Z5i9XFuaz_VW']
)->label(false); ?>

行动

  public function actionSignup()
    {

        $browser = new Browser;
        if( $browser->getBrowser() == Browser::BROWSER_IE && $browser->getVersion() < 11 ) 
            {   
                return $this->render('browser');                                                                                                                                   
        }

        $company = new Company(); 
        $model = new SimUser(['scenario' => SimUser::SCENARIO_REGISTER]);

        if ($model->load(Yii::$app->request->post())&& $model->validate() && $company->load(Yii::$app->request->post())&& $company->validate()) {
           $model->scenario = SimUser::SCENARIO_REGISTER;
           $model->setPassword($model->user_password_hash);
          // $model->setCaptcha($model->captcha);
            $model->generateAuthKey(); 
            $token = Yii::$app->security->generateRandomString();
            $model->user_access_token = $token;
            $model->user_verify = 1;
           // $company->save();
            $model->company_id = 3; 
          //  $model->save();
            $model->user_id = 44;
            var_dump($model->validate());exit();

            if ($model->validate()){
//                $auth = Yii::$app->authManager;
//                $authorRole = $auth->getRole('Company Admin');
//                $auth->assign($authorRole, $model->user_id);
                $path = 'C:/wamp/www/test.qsims.com/web/gentelella-1.2.0/production/images/DCMLogo.png';
                Yii::$app->mailer->compose('@app/mail/layouts/verify',['model' => $model, 'path' => $path,'token' => $model->user_access_token])
                       ->setTo($model->user_email)
                       ->setFrom('test.qsims@gmail.com')
                       ->setSubject('Welcome to Qsims'.$model->user_fname." ".$model->user_lname.'. Verify your account to continue')
                       ->setTextBody('Verify Account')
                       ->send(); 
            }

          //  \Yii::$app->user->login($model);
              return $this->redirect(['site/verify-new']);
        }

        return $this->render('signup', [
            'model' => $model,
            'company' => $company,

        ]);
    }

我哪里错了?

4

1 回答 1

0
Add this to the model
Public $reCaptcha;
add this to rules
 ['reCaptcha', 'reCaptchaValidator']

call the custom validation
 public function reCaptchaValidator($attribute)
    {
        $validator = new ReCaptchaValidator;
        if (!$validator->validate($this->reCaptcha, $error)) {
            $this->addError($attribute, $error);
        }

    }
于 2019-01-24T10:12:52.270 回答