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面向对象全攻略 (八)重载新的方法
Sep 30 PHP
解析PHP的session过期设置
Jun 29 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
PHP答题类应用接口实例
Feb 09 PHP
php常用图片处理类
Mar 16 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
PHP sdk文档处理常用代码示例解析
Dec 09 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
php绘制圆形的方法
2015/01/24 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
javascript开发中因空格引发的错误
2010/11/08 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
简单了解JS打开url的方法
2020/02/21 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
python实现按任意键继续执行程序
2016/12/30 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
法人代表身份证明书及授权委托书
2014/09/16 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书