如何在yii wform中添加验证码

时间:2016-06-01 12:43:44

标签: php yii captcha

我正在使用“wForm”扩展表单。我想在我的表单中添加“captcha”。 我为“cForm”尝试了“myCaptcha”组件。 http://www.yiiframework.com/wiki/733/how-to-show-a-captcha-in-cform/ 但我收到以下错误

  

“WForm”及其行为没有名为“MyCaptcha”的方法或闭包。

我如何使用“wForm中的cform验证码”?

1 个答案:

答案 0 :(得分:1)

下载扩展程序cCaptcha extension

1)将CaptchaExtended.zip文件解压缩到../ protected / extensions / captchaExtended /.

2)注册CaptchaExtendedAction和CaptchaExtendedValidator的类路径,例如在components / controller.php中:

public function init(){
    // register class paths for extension captcha extended
    Yii::$classMap = array_merge( Yii::$classMap, array(
        'CaptchaExtendedAction' => Yii::getPathOfAlias('ext.captchaExtended').DIRECTORY_SEPARATOR.'CaptchaExtendedAction.php',
        'CaptchaExtendedValidator' => Yii::getPathOfAlias('ext.captchaExtended').DIRECTORY_SEPARATOR.'CaptchaExtendedValidator.php'
    ));
}

3)在控制器中定义动作,例如SiteController:

public function actions(){
    return array(
        'captcha'=>array(
            'class'=>'CaptchaExtendedAction',
            // if needed, modify settings
            'mode'=>CaptchaExtendedAction::MODE_MATH,
        ),
    );
}

4)在model :: rules()中定义客户端验证:

public function rules(){
    return array(
        array('verifyCode', 'CaptchaExtendedValidator', 'allowEmpty'=>!CCaptcha::checkRequirements()),
    );
}

5)在视图文件中添加以下内容(在表单中)

$this->widget('CCaptcha'); //for captch image
echo CHtml::activeTextField($model,'verifyCode'); //text field to enter captcha text