关于后台老板网yii框架的学习小结(5)-验证码的使用与规则的设置,为后台模块设置独立的布局

关于后盾网yii框架的学习小结(5)--验证码的使用与规则的设置,为后台模块设置独立的布局

验证码使用的步骤,入下图:
关于后台老板网yii框架的学习小结(5)-验证码的使用与规则的设置,为后台模块设置独立的布局
1.在创建的Controller连加上这个action方法,如LoginController。

public function actions(){
return array(
'captcha' => array(
'class' => 'system.web.widgets.captcha.CCaptchaAction',//这个是通过目录的方式来设置的,system是framework的文件夹,class表示使用的类
'height' => 25,//下面四个是配置,宽高和长度
'width' => 80,
'minLength'=> 4,
'maxLength'=> 4
),
);
}

通过地址栏来访问capture的话就会调用action这个方法,是在D:\wamp\www\yii\framework\web\widgets\captcha这个目录下面的CCaptureAction.php的文件。然后这个文件里面配置的public的变量都可以在Controller里面进行配置来修改的。
路径别名就是通过点的方式来写的,如:
system.web.widgets.captcha.CCaptchaAction == D:\wamp\www\yii\framework\web\widgets\captcha

这样调取出来会有问题,样式会换,但字母不会换

2.上面的话是在控制器里把验证码的功能写好了,现在需要将这个功能展示到视图里面去。
//关于这里面的参数。 第一个应该是model的名称用CCapture。然后第二个参数是数组。showRefreshButton是刷新按钮,用了false,因为默认的比较难看所以不显示。然后clickableImage表示可以点击的。imageOptions图片的选项,style表示悬浮在上面的时候的样子,这里的是手型。

PS:renderPartial来渲染页面的话,不回载入jquery。

3.显示错误信息
在视图界面的结尾处加上ul和li的部分,然后通过来输出错误信息,第一个参数是模型参数,第二个参数是你的id

4.修改核心类。来解决这样调取出来会有问题,样式会换,但字母不会换

关于后台老板网yii框架的学习小结(5)-验证码的使用与规则的设置,为后台模块设置独立的布局

关于后台老板网yii框架的学习小结(5)-验证码的使用与规则的设置,为后台模块设置独立的布局
找到CCaptureAction.php这个文件,这个文件会先运行run方法,
解决不更换验证码的bug的话,只要在this−>renderImage(this->getVerifyCode(true));这里加上这个ture就好了。这是典型的if语句判断出的bug。

5.需要设置规则,即设置rules,来判断,如果成功干什么,失败干什么,这个的话是在model层来完成的,找到我这个创建时候新建的那个LoginForm这个model。

class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe;
public $captcha;
private $_identity;

public function rules(){
return array(
// username and password are required
array('username', 'required', 'message'=>'用户名必须填写'),//首先第一个是c参数,是你前面定义的参数,然后第二个参数是验证的规则,比如required,authenticate,boolean,captcha等,然后第三个参数是message,用来显示错误信息的。
array('password', 'required', 'message'=>'密码必须填写'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),
array('captcha', 'captcha', 'message'=>'验证码错误')
);
}
}

在这个model里面,有rules这个方法

6.需要触发验证
首先找到这个action是什么地方。然后发现是admin/login/index这个里面,就是modules/admin文件夹里LoginController里的actionindex的方法。
在actionindex里面,可以通过POST来获取提交的数据。_POST[‘LoginForm’]就是获取。

在actionindex里面,可以通过$_POST来获取提交的数据。$_POST['LoginForm']就是获取。
$loginForm->attributes = $_POST['LoginForm'];然后将传递过来的值赋值给attribute属性。
if(isset($_POST['LoginForm'])){
$loginForm->attributes = $_POST['LoginForm'];
if($loginForm->validate() && $loginForm->login()){ //validate这个属性就会去讲attribute属性里面的值到model里面的rules方法里进行验证。
Yii::app()->session['logintime'] = time();
$this->redirect(array('default/index'));
}
}

为后台模块设置独立的布局

1.将D:\wamp\www\yii\blog\protected\components这里面的Controller.php的文件放到admin/components文件夹下,这样后台就会调用专门Controller的配置文件。
2.然后在views里面创建layouts文件夹,然后将配置文件里改掉,要去掉一个 /,不然还会调用前台的layouts。
public $layout=’/layouts/blog’;