发布于 2015-07-26 00:24:05 | 277 次阅读 | 评论: 1 | 来源: PHPERZ

这里有新鲜出炉的YII 2.0教程,程序狗速度看过来!

Yii高性能PHP框架

Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。Yii是最有效率的PHP框架之一。Yii是创始人薛强的心血结晶,于2008年1月1日开始开发。


Yii框架支持表单的Ajax验证,只需要在view视图输出表单是,指定一个属性。

$form = ActiveForm::begin(['id' => 'form-signup']);
$form->enableAjaxValidation = true;

不过,在支持验证码ajax验证时出现一个问题,使用ajax验证返回成功之后,表单再次提交会提示验证码错误,可以通过自定义验证码类来解决这个问题。

模型添加验证规则:

public $verifyCode;

public function rules()
{
    return [
        // 其他规则

        // 验证码规则
        ['verifyCode', 'required'],
        ['verifyCode', 'captcha'],
    ];
}

视图部分:

use use yii\captcha\Captcha;

$form = ActionForm::beigin(['id' => 'form-signup']);
$form->enableAjaxValidation = true;
// 其他字段
$form->field($model,'verifyCode')->widget(
Captcha::className(), 
[
    'template' => '<div class="row"><div class="col-lg-4">{image}</div><div class="col-lg-8">{input}</div></div>',
]
)

控制器部分:

// 定义自己的验证码类

namespace forontend\controllers; // 具体根据自己的项目定义

use Yii;
use yii\captcha\CaptchaAction;

class CaptchaUserController extends CaptchaAction
{
    public function validate($input, $caseSensitive)
    {
        $code = $this->getVerifyCode();
        $valid = $caseSensitive ? ($input === $code) : strcasecmp($input, $code) === 0;

        $session = Yii::$app->getSession();
        $session->open();

        $name = $this->getSessionKey().'count';
        $session[$name] = $session[$name] + 1;

        if ($valid || $session[$name] > $this->testLimit && $this->testLimit > 0)
        {
            // 修改为允许ajax二次验证
            if (Yii::$app->request->isAjax === false)
                $this->getVerifyCode(true);
        }

        return $valid;
    }
}

提交到的控制器也需要指定下验证码类的路径

SiteController

// 其他代码

public function actions()
{
    return [
        // 其他actions

        'captcha' => [
            'class' => 'frontend\controllers\CaptchaUserController', // 定义自己的验证类文件路径
        ],
    ];
}

到此基本结束,登录或者注册时,验证码正确通过验证。



相关阅读 :
Yii2.0 表单Ajax验证时验证码错误问题解决方法
composer安装的YII2错误:Calling unknown method: yii\web\UrlManager::addRules()解决方法
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
执行yiic出现错误 /usr/bin/env: php: 没有那个文件或目录 解决方法
Yii框架使用中的一些错误解决方法与建议
最新网友评论  共有(1)条评论 发布评论 返回顶部
qpzvr 发布于2016-08-12 16:25:35
不懂
支持(0)  反对(0)  回复

Copyright © 2007-2015 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务