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 str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
用PHP将数据导入到Foxmail的实现代码
Sep 05 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
使用URL传输SESSION信息
Jul 14 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
PHP 实现链式操作
Mar 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
php unlink()函数使用教程
2018/07/12 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
asp批量修改记录的代码
2008/06/25 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
学校后勤岗位职责
2014/02/19 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
2014最新离职证明范本
2014/09/12 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js