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 相关文章推荐
javascript 小型动画组件与实现代码
Jun 02 PHP
PHP之短标签开启设置
Jun 17 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 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
PHP 编程安全性小结
2010/01/08 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php实现读取超大文件的方法
2014/07/28 PHP
js以对象为索引的关联数组
2010/07/04 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
小程序页面动态配置实现方法
2019/02/05 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
python实现redis三种cas事务操作
2017/12/19 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
年终自我鉴定
2013/10/09 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书