Php 验证码不存在';t在yii2中验证

Php 验证码不存在';t在yii2中验证,php,yii,yii2,captcha,yii2-advanced-app,Php,Yii,Yii2,Captcha,Yii2 Advanced App,提示:用户名和电子邮件由ajaxValidation和validate方法检查 一切都是正确的,但我猜验证码在服务器中更改了,但旧图片在客户端 我在谷歌上搜索了很多,没有找到结果 这是一种观点: <?php $form = \yii\widgets\ActiveForm::begin([ 'id' => 'form-signup', 'action' => 'signup',

提示:用户名和电子邮件由ajaxValidation和validate方法检查

一切都是正确的,但我猜验证码在服务器中更改了,但旧图片在客户端

我在谷歌上搜索了很多,没有找到结果

这是一种观点:

<?php
    $form = \yii\widgets\ActiveForm::begin([
                'id' => 'form-signup',
                'action' => 'signup',
                'enableAjaxValidation' => false,
                'enableClientValidation' => true,
                'validationUrl' => 'validation',
                'validateOnBlur' => true,
                'fieldConfig' => [
                    'template' => '<div class="col-md-4" >{label}{input}{error}</div>'
                ]
    ]);
    ?>

    <?= $form->field($signup, 'username', ['enableAjaxValidation' => true]) ?>
    <?= $form->field($signup, 'name') ?>
    <?= $form->field($signup, 'family') ?>
    <?= $form->field($signup, 'mobile') ?>
    <?= $form->field($signup, 'password')->passwordInput() ?>
    <?= $form->field($signup, 'password_repeat')->passwordInput() ?>
    <?= $form->field($signup, 'email', ['enableAjaxValidation' => true]) ?>
    <?= $form->field($signup, 'verifyCode', ['enableAjaxValidation' => false])->widget(yii\captcha\Captcha::className()) ?>
    <div class="form-group">
        <?= yii\helpers\Html::submitButton('signup', ['class' => 'btn btn-green margin-right', 'name' => 'signup-button']) ?>

    </div>
ajax验证控制器方法:

  public function actionValidation() {
    $model = new SignupForm();
    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = 'json';
        return \yii\widgets\ActiveForm::validate($model);
    }
}
型号:

 public $name;
public $family;
public $mobile;
public $username;
public $email;
public $password;
public $password_repeat;
public $verifyCode;

   public function rules() {
    return [
        [['name', 'family', 'mobile'], 'default'],
        ['name', 'string', 'max' => 50],
        ['family', 'string', 'max' => 50],
        ['mobile', 'string', 'max' => 11],
        ['username', 'filter', 'filter' => 'trim'],
        ['username', 'required'],
        ['username', 'string', 'min' => 2, 'max' => 255],
        [['username'], 'unique', 'targetClass' => '\frontend\models\User', 'message' => 'username already taken.'],
        ['email', 'filter', 'filter' => 'trim'],
        ['email', 'required'],
        ['email', 'email'],
        ['email', 'string', 'max' => 255],
        ['email', 'unique', 'targetClass' => '\frontend\models\User', 'message' => 'email name already taken.'],
        ['password', 'required'],
        ['password', 'string', 'min' => 6, 'max' => 255],
        ['password_repeat', 'string', 'min' => 6, 'max' => 255],
        ['password_repeat', 'compare', 'compareAttribute' => 'password'],
        ['verifyCode', 'captcha'],
    ];
}
控制器中没有任何行为

  • 表单的启用和验证优先于字段的启用和验证,因此很难说您正试图使用当前设置执行什么操作
  • 确保已将verifyCode声明为模型上的属性
  • 验证码验证码保存在会话中。会话密钥是控制器ID和操作ID的组合。因此,您可能有一个配置错误的会话。或者您的验证码的动作名称不是“验证码”-您缺少问题中的源代码部分
     public $name;
    public $family;
    public $mobile;
    public $username;
    public $email;
    public $password;
    public $password_repeat;
    public $verifyCode;
    
       public function rules() {
        return [
            [['name', 'family', 'mobile'], 'default'],
            ['name', 'string', 'max' => 50],
            ['family', 'string', 'max' => 50],
            ['mobile', 'string', 'max' => 11],
            ['username', 'filter', 'filter' => 'trim'],
            ['username', 'required'],
            ['username', 'string', 'min' => 2, 'max' => 255],
            [['username'], 'unique', 'targetClass' => '\frontend\models\User', 'message' => 'username already taken.'],
            ['email', 'filter', 'filter' => 'trim'],
            ['email', 'required'],
            ['email', 'email'],
            ['email', 'string', 'max' => 255],
            ['email', 'unique', 'targetClass' => '\frontend\models\User', 'message' => 'email name already taken.'],
            ['password', 'required'],
            ['password', 'string', 'min' => 6, 'max' => 255],
            ['password_repeat', 'string', 'min' => 6, 'max' => 255],
            ['password_repeat', 'compare', 'compareAttribute' => 'password'],
            ['verifyCode', 'captcha'],
        ];
    }