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 身份验证方面的函数
Oct 11 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
PHP开发的一些注意点总结
Oct 12 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
PHP 文件系统详解
Sep 13 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP代码实现表单数据验证类
Jul 28 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 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的call_user_func传reference引发的思考
2010/07/23 PHP
详解php中反射的应用
2016/03/15 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
小学教师听课制度
2014/02/01 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
鲜花方阵解说词
2014/02/13 职场文书
建筑投标担保书
2014/05/20 职场文书
出差报告范文
2014/11/06 职场文书
医院消毒隔离制度
2015/08/05 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python