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程序?
Dec 08 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
php中函数的形参与实参的问题说明
Sep 01 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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
php.ini中date.timezone设置分析
2011/07/29 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
Python语言的12个基础知识点小结
2014/07/10 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python实现flappy bird游戏
2018/12/24 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
党风廉政承诺书
2014/03/27 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
初中家长评语大全
2014/12/26 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript