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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 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
MYSQL环境变量设置方法
2007/01/15 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
python七夕浪漫表白源码
2019/04/05 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
高考自主招生自荐信
2013/10/20 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
微笑服务演讲稿
2014/05/13 职场文书
特教教师先进事迹
2014/05/21 职场文书
入党自传范文2015
2015/06/26 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫