yii用户注册表单验证实例


Posted in PHP onDecember 26, 2015

本文实例讲述了yii用户注册表单验证实现方法。分享给大家供大家参考,具体如下:

视图层:register.php

<?php
//使用小物件生成form元素
$form=$this->beginWidget('CActiveForm');
?>
<!--用户名-->
<?php echo $form->labelEx($model,'username');?>
<?php echo $form->textField($model,'username');?>
<?php echo $form->error($model,'username');?>
<br>
<!--密码-->
<?php echo $form->labelEx($model,'password');?>
<?php echo $form->passwordField($model,'password');?>
<?php echo $form->error($model,'password');?>
<br>
<!--确认密码-->
<?php echo $form->labelEx($model,'password2');?>
<?php echo $form->passwordField($model,'password2');?>
<?php echo $form->error($model,'password2');?>
<br>
<!--邮箱-->
<?php echo $form->labelEx($model,'email');?>
<?php echo $form->textField($model,'email');?>
<?php echo $form->error($model,'email');?>
<br>
<!--性别-->
<?php echo $form->labelEx($model,'sex');?>
<?php echo $form->radioButtonList($model,'sex',array(1=>'男',2=>'女'),array("separator"=>" "));?>
<br>
<!--年级-->
<?php echo $form->labelEx($model,'grade');?>
<?php echo $form->dropDownList($model,'grade',array(0=>"--请选择--",1=>"2010级",2=>"2011级",3=>"2012级"));?>
<?php echo $form->error($model,'grade');?>
<br>
<?php echo $form->labelEx($model,'hobby');?>
<?php echo $form->checkBoxList($model,'hobby',array(1=>"篮球",2=>"足球",3=>"排球"),array("separator"=>" "));?>
<?php echo $form->error($model,'hobby');?>
<!--提交-->
<?php echo CHtml::submitButton('提交');?>
<?php
$this->endWidget();
?>

model层的代码如下:User.php

<?php
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class User extends CActiveRecord{
  //创建一个模型的对象 静态
  public $password2;//非数据库的字段,但是在view中需要用到
  public static function model($className = __CLASS__) {
    return parent::model($className);
  }
  //返回当前数据表的名字
  public function tableName() {
    //parent::tableName();
    return '{{user}}';//这样写可以省略前缀
  }
  //设置标签的显示名字
  public function attributeLabels() {
    return array(
      "username"=>"姓名",
      "password"=>"密码",
      "password2"=>"确认密码",
      "email"=>"邮箱",
      "sex"=>"性别",
      "grade"=>"年级",
      "hobby"=>"爱好",
    );
  }
  //验证表单域
  public function rules() {
    return array(
      array("username","required","message"=>"用户名不能为空"),
      array("password","required","message"=>"密码不能为空"),
      //验证密码和确认密码
      array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致"),
      //验证邮箱
      array("email","email","allowEmpty"=>false,"message"=>"邮箱格式不正确"),
      //验证年级
      array("grade","in","range"=>array(1,2,3),"message"=>"请选择年级"),
      //验证爱好,使用自定义规则
      array("hobby","checkHobby"),
    );
  }
  //验证爱好
  function checkHobby(){
    $this->hobby;
    $len= strlen($this->hobby);
    if($len<3){
      $this->addError("hobby","爱好至少为2个以上");
    }
  }
}
?>

control层的代码如下:

//信息添加 添加显示页面和添加处理使用同一个方法
  public function actionAdd(){
    $user=new User();
    if(isset($_POST['User'])){
//      foreach ($_POST['User'] as $k =>$v){
//        $user->$k=$v;
//      }
      if(is_array($_POST['User']['hobby']))
        $_POST['User']['hobby']= implode(",", $_POST['User']['hobby']);
      //print_r($_POST['User']);
      $user->attributes=$_POST['User'];
      if($user->save()){
        echo 'success';
      }else{
        echo 'error';
      }
    }
    $this->renderPartial("new",array("model"=>$user));
}

其中,表单的自动验证,在model层实现,表单元素的名称与数据库中的字段名字一致,可设置错误信息进行提示。

希望本文所述对大家基于yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
PHP 读取和编写 XML
Nov 19 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
PHP中list方法用法示例
Dec 01 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP7之Mongodb API使用详解
Dec 26 #PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 #PHP
thinkPHP下ueditor的使用方法详解
Dec 26 #PHP
thinkPHP中分页用法实例分析
Dec 26 #PHP
thinkPHP中验证码的简单使用方法
Dec 26 #PHP
分享50个提高PHP执行效率的技巧
Dec 26 #PHP
PHP获取二维数组中某一列的值集合
Dec 25 #PHP
You might like
模仿OSO的论坛(二)
2006/10/09 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
js的一些常用方法小结
2011/06/29 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
python异常和文件处理机制详解
2016/07/19 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python 转义字符详细介绍
2017/03/21 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
python面向对象 反射原理解析
2019/08/12 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
职位说明书范文
2014/05/07 职场文书
团队拓展活动方案
2014/08/28 职场文书
地方白酒代理协议书
2014/10/25 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
老人院义工活动感想
2015/08/07 职场文书
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python