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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 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高自定义性安全验证码代码
2011/11/27 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php比较相似字符串的方法
2015/06/05 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
车队司机自我鉴定
2014/03/02 职场文书
考核评语大全
2014/04/29 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
护理见习报告范文
2014/11/03 职场文书
环卫工人慰问信
2015/02/15 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
如何写辞职信
2015/05/13 职场文书
学生病假条怎么写
2015/08/17 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL
无线电通信名词解释
2022/02/18 无线电