2016-04-13 28 views
0

Birden çok captcha içeren formları ayrı formda içeren bir formum var. Örnek giriş ve kayıt modellerini vb. Kodları aşağıda kullanırsam sorun şu ki bir captcha yenilendiğinde başka bir captcha kullanılamaz çünküYii2 bir sayfadaki çok captcha

1)

giriş kalıcı oturum (görünüm):

echo Captcha::widget([ 
    'id' => 'Login-captcha', 
    'name' => 'LoginModel[captcha]', 
    'captchaAction' => '/site/captcha' 
]); 

LoginModel:

onlar aynı oturum varible dile kullanmak
public function rules() 
{ 
    return [    
     ['captcha', 'captcha'], 
    ]; 
} 

2) Kayıt

kayıt modal (görünüm):

echo Captcha::widget([ 
    'id' => 'register-captcha', 
    'name' => 'RegisterModel[captcha]', 
    'captchaAction' => '/site/captcha' 
]); 

RegisterModel:

:

public function rules() 
{ 
    return [    
     ['captcha', 'captcha'], 
    ]; 
} 

Ben farklı oturum değişkenleri ayarlamak için farklı Captcha eylemleri kullanılan oturumu sorunu çözmek için

1) Giriş

giriş kalıcı görünüm:

echo Captcha::widget([ 
    'id' => 'Login-captcha', 
    'name' => 'LoginModel[captcha]', 
    'captchaAction' => '/site/captcha-login' 
]); 

LoginModel:

public function rules() 
{ 
    return [    
     ['captcha', 'captcha', 'captchaAction' => 'site/captcha-login',], 
    ]; 
} 

2)

kayıt modal Kayıt (görünüm):

echo Captcha::widget([ 
    'id' => 'register-captcha', 
    'name' => 'RegisterModel[captcha]', 
    'captchaAction' => '/site/captcha-register' 
]); 

RegisterModel:

public function rules() 
{ 
    return [    
     ['captcha', 'captcha', 'captchaAction' => 'site/captcha-register',], 
    ]; 
} 

şimdi herşey yolunda ama kadar ana yapılandırma dosyasının commponent bölümünde aşağıda config veritabanına düzenli php dosyalarından oturumları taşıdığınızda: İlk sayfa yüklemesine

sonra
'session' => [ 
    'class' => 'yii\web\DbSession', 
], 

captcha'lar değil çalışır ve sahip düzgün çalışması için onları yenilemek. sorun nedir?

cevap

0

o yii1 içindir, bu deneyin ama fikir olsun, daha detail

public function rules() 
{ 
    return array(
     ... 
     array('verifyCode1', 'captcha', ... 
     array('verifyCode2', 'verifycaptcha2', ... 
    ); 
} 

public function verifycaptcha2($attribute, $params) 
{ 
     $captcha2 = Yii::app()->getController()->createAction('captcha2nd'); 
     if (!$captcha2->validate($this->verifyCode2, false)) 
     { 
       $this->addError('verifyCode2', 'invalid captcha.'); 
     } 
} 

Ayrıca bakınız this