【发布时间】:2016-06-09 15:18:35
【问题描述】:
我正在为表单使用“wForm”扩展名。我想在我的表单中添加“验证码”。 我已经为“cForm”尝试了“myCaptcha”组件。 http://www.yiiframework.com/wiki/733/how-to-show-a-captcha-in-cform/ 但我收到以下错误
“WForm”及其行为没有名为“MyCaptcha”的方法或闭包。
如何在 wForm 中使用“cform 验证码”?
【问题讨论】:
我正在为表单使用“wForm”扩展名。我想在我的表单中添加“验证码”。 我已经为“cForm”尝试了“myCaptcha”组件。 http://www.yiiframework.com/wiki/733/how-to-show-a-captcha-in-cform/ 但我收到以下错误
“WForm”及其行为没有名为“MyCaptcha”的方法或闭包。
如何在 wForm 中使用“cform 验证码”?
【问题讨论】:
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) 在控制器中定义动作,例如站点控制器:
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
【讨论】: