3
模型中规则制定和分析

YII模型主要分为两类,一个数据模型,处理和数据库相关的增删改查。继承CActiveRecord。还有一个是表单模型,继承CFormModel。不与数据库进行交互。操作与数据模型保持一致。

先分析数据模型:

数据模型基本包括四个方法。这里有两个须要注意的地方:

1 还记得视图中有确认password选项吗?数据库中没有这一个字段,不进行处理的话。程序会报错

处理方法:声明这样变量,并将这个变量进行label映射

例如以下:

    public $password2; //
//设置标签名字与数据库字段相应
public function attributeLabels() {
return array(
'username'=>'用户名',
'password'=>'密 码',
'password2'=>'确认密码',
'user_sex'=>'性 别',
'user_qq'=>'qq号码',
'user_hobby'=>'爱 好',
'user_xueli'=>'学 历',
'user_introduce'=>'简 介',
'user_email'=>'邮 箱',
'user_tel'=>'手机号码',
);
}

2 验证规则制定:

    /*
* 实现用户注冊表单验证
* 在模型里边设置一个方法,定义详细表单域验证规则
*/
public function rules() {
return array( array('username','required','message'=>'username必填'), //username不能反复(与数据库比較)
array('username', 'unique', 'message'=>'username已经占用'), array('password','required','message'=>'密码必填'), //验证确认密码password2 要与密码的信息一致
array('password2','compare','compareAttribute'=>'password','message'=>'两次密码必须一致'), //邮箱默认不能为空
array('user_email','email','allowEmpty'=>false, 'message'=>'邮箱格式不对'), //验证qq号码(都是数字组成。5到12位之间。開始为非0信息,使用正則表達式验证)
array('user_qq','match','pattern'=>'/^[1-9]\d{4,11}$/','message'=>'qq格式不对'), //验证手机号码(都是数字。13開始,一共同拥有11位)
array('user_tel','match','pattern'=>'/^13\d{9}$/','message'=>'手机号码格式不对'), //验证学历(信息在2、3、4、5之间则表示有选择,否则没有),1正则;2范围限制
//范围限制
array('user_xueli','in','range'=>array(2,3,4,5),'message'=>'学历必须选择'), //验证爱好:必选两项以上(自己定义方法对爱好进行验证)
array('user_hobby','check_hobby'), //为没有详细验证规则的属性,设置安全的验证规则。否则attributes不给接收信息
array('user_sex,user_introduce','safe'),
);
} /*
* 在当前模型里边定义一个方法check_hobby对爱好进行验证
*/
function check_hobby(){
//在这种方法里边,我们能够获得模型的相关信息
//$this -> 属性名; //调用模型对象的相关属性信息
//$this 就是我们在控制器controller里边实例化好的模型对象 $len = strlen($this -> user_hobby);
if($len < 3)
$this -> addError('user_hobby','爱好必须选择两项或以上');
}

还有没有别的验证规则?

有的,见下图:

表单模型:主要用于收集用户信息。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

整个过程:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

在组件中的改动:

就此OK。

YII用户注冊和用户登录(三)之模型中规则制定和分析的更多相关文章

  1. YII用户注冊和用户登录(二)之登录和注冊在视图通过表单使用YII小物件并分析

    2 登录和注冊在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClie ...

  2. YII用户注冊和用户登录(五)之进行session和cookie分析 ,并在前后区分session和cookie

    5 进行session和cookie分析 ,并在前后区分session和cookie: 记住登录状态 这样下次再登录站点的时候.就不用反复输入username和password. 是浏览器的cooki ...

  3. struts2学习笔记(三)—— 在用户注冊程序中使用验证框架

    实现目标:       1.使用验证框架对用户注冊信息进行验证       2.验证username.password.邮箱不能为空       3.验证username.password长度     ...

  4. 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)

    近期看老罗视频,做了一个简单的用户注冊系统.用户通过网页(JSP)输入用户名.真名和password,Servlet接收后通过JDBC将信息保存到MySQL中.尽管是个简单的不能再简单的东西,但麻雀虽 ...

  5. WordPress改动新用户注冊邮件内容--自己定义插件

    有些开放用户注冊功能的WordPress站点,可能有这么一项需求,就是用户注冊成功后,系统会分别给站点管理员和新用户发送一封通知邮件.给管理员发送的是新用户的username和Email,给刚刚注冊的 ...

  6. Django 介绍、安装配置、基本使用、Django 用户注冊样例

    Django介绍         Django 是由 Python 开发的一个免费的开源站点框架.能够用于高速搭建高性能.优雅的站点.              DjangoMTV 的思想项目架构图 ...

  7. YII用户注冊表单的实现熟悉前台各个表单元素操作方式

    模还是必须定义两个基本方法.还有部分label标签映射为汉字,假设进行表单验证,还要定义一些验证规则: <? php /* * 用户模型 * */ class user extends CAct ...

  8. Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)

    接着上两篇文章.我们基于Bmob提供的API实现用户登录功能.总体看一下代码. 1.注冊页面xml: <RelativeLayout xmlns:android="http://sch ...

  9. JSP_tomcat_mysql_注冊验证用户;

    本文出自:http://blog.csdn.net/svitter 资源下载: github: git clone https://github.com/Svtter/JSP-tomcat-mysql ...

随机推荐

  1. A - Next Round

    Problem description "Contestant who earns a score equal to or greater than the k-th place finis ...

  2. php数据库分页

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. php基础知识 书写格式

    PHP,是英文超文本预处理语言Hypertext Preprocessor的递归缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言. php嵌入页面的标记有 ...

  4. Embedded之Stack之三

    Stack Overflow While stacks are generally large, they don't occupy all of memory. It is possible to ...

  5. boost::mutex::scoped_lock

    在三维重建过程中,世界地图 Map &world作为唯一 访问/更新 对象,可以使用boost::mutex::scoped_lock . 一:boost::mutex::scoped_loc ...

  6. VTK:VTK嵌入MFC成功

    VTK作为医学显示库,得到较多使用.作为较为上层的设计,对OpenGL进行了封装,并且有Windows.Linux.安卓等开发版本,可移植性较强. 不过VES暂时没有编译成功. 以下是嵌入MFC-ID ...

  7. Android 链接 手机有关问题及解决方案

    我出现的问题: 这是我百度的解决方案:

  8. msmq消息队列使用场景

    MSMQ全称是Microsoft Message Queue——微软消息队列. MSMQ是一种通信的机制,因为是一种中间件技术,所以它能够支持多种类型的语言开发,同时也是跨平台的通信机制,也就是说MQ ...

  9. Monad (functional programming)

    In functional programming, a monad is a design pattern that defines how functions, actions, inputs, ...

  10. python 爬取妹子

    爬取妹子图片 网址:https://www.mzitu.com/jiepai/ 2019-06-13 环境WIN10 1903 python 3.7.3 个人习惯先在IDLE中进行调试 import ...