2016-07-28 536 views
0

我使用himiklab/yii2-recaptcha-widget。提交表單時,我總是收到驗證錯誤。谷歌recaptcha驗證yii2總是失敗

{"captcha":["The verification code is incorrect."]}. 

形式:

$form->field($model, 'captcha',['template' => "{input}\n{hint}\n{error}"])->widget(
      \himiklab\yii2\recaptcha\ReCaptcha::className(), 
      [ 
      'siteKey' => <mysitekey>, 
      'widgetOptions' => ['id'=>'recaptcha1'] 
      ]) 

控制器:

if(isset($_POST['Contact'])){ 
      if ($model->load(Yii::$app->request->post()) && $model->save()) { 

我在做什麼錯?

+0

如何嘗試在模板中給出的基本驗證碼? –

回答

0

問題是,Yii總是運行驗證兩次,在驗證()方法和保存期間再次執行驗證,這導致第一次驗證成功,但第二次返回錯誤。 因此,對於第二種情況,您將需要保存而不運行驗證,即保存(false)。

第二次機會可能是在safe()方法之前解除對驗證碼的驗證。

+0

問題在別的地方。我遇到了同樣的問題,即使我在保存時禁用驗證,它也不起作用。 – jeesus

-1

將enableAjaxValidation設置爲false。

<?php $form = ActiveForm::begin([ 
    'id' => 'login-form', 
    'enableAjaxValidation' => false, 
    'enableClientValidation' => false, 
    'validateOnBlur'   => false, 
    'validateOnType'   => false, 
    'validateOnChange'  => false, 
]) ?> 
+0

有同樣的問題。然而這不是一個解決方案。 – jeesus