YII用户注冊表单的实现熟悉前台各个表单元素操作方式
模还是必须定义两个基本方法。还有部分label标签映射为汉字,假设进行表单验证,还要定义一些验证规则:
<? php /*
* 用户模型
*
*/
class user extends CActiveRecord{
//获得数据模型
public static function model($classname = __CLASS__){
return parent::model($classname);
}
//定义数据表名字
public function tableName(){
return "{{user}}";
}
//设置标签名字和数据库字段相应
public function attributeLabels() {
//parent::attributeLabels();
return array(
'username' => '用户名',
'password' => '密码',
'user_qq' => 'qq',
'user_tel' => '手机',
'user_hobby' => '爱好',
'user_introduce' => '简单介绍',
'user_sex' => '性别',
'user_email' => 'email',
);
}
/*
* 模型里面定义表单验证规则
*/
public function rules(){
return array(
array('username','required','message'=>'请填写用户名'), //第二參数必须设置 ,不然无法保存数据到数据库 第二个字段如何来的,见下图分晓
array('password','required','message'=>'请填写密码'),
);
}
}
? >
关于注冊页面控制器:
render方法主要包括两个字段。一个是要渲染的模板。一个是数组,表示要传递过去变量
<? php
/*
用户控制器
*/
class UserController extends Controller{
function actionLogin(){
//$this->renderPartial('login');
$this->render('login');
//$this ->renderPartial('login');
}
function actionRegister(){
//实例化数据模型对象user
$user_model = new User();
/**
* renderPartial不渲染布局
* render会渲染布局
*/
//$this ->renderPartial('register'); //性别信息
$sex[1] = "男";
$sex[2] = "女";
$sex[3] = "保密"; //定义学历
$xueli[1] = "-请选择-";
$xueli[2] = "小学";
$xueli[3] = "初中";
$xueli[4] = "高中";
$xueli[5] = "大学"; //定义爱好信息
$hobby[1] = "篮球";
$hobby[2] = "足球";
$hobby[3] = "排球";
$hobby[4] = "棒球"; //假设用户有注冊表单
if(isset($_POST['User'])){
//给模型收集表单信息
//foreach($_POST['User'] as $_k => $_v){
// $user_model -> $_k = $_v;
//} //上边的foreach,在yii框架里边有优化,使用模型属性attributes来进行优化
//attributes 属性已经把foreach集成好了,我们能够直接使用
$user_model -> attributes = $_POST['User']; //实现信息存储
if($user_model -> save()) //model 对象会调用rules 方法。详细追踪,能够一直到
$this ->redirect ('./index.php'); //重定向到首页
} $this -> render('register',array('user_model'=>$user_model,'sex'=>$sex,'xueli'=>$xueli,'hobby'=>$hobby));
}
}
? >
关于追踪模型save方法调用表单验证的rules方法例如以下
模型表单:
主要是创建form对象,调用小物件来实现 ,调用小物件时把CActiveForm传递进去,不是CActiveRecord偶
<!--放入view详细内容-->
<div class="block box">
<div class="usBox">
<div class="usBox_2 clearfix">
<div class="logtitle3"></div>
<?php $form = $this -> beginWidget('CActiveForm'); ?
>
<table cellpadding="5" cellspacing="3" style="text-align:left; width:100%; border:0;">
<tbody>
<tr>
<td style="width:13%; text-align: right;">
<?php echo $form->label($user_model, 'username'); ?
>
</td>
<td style="width:87%;">
<?php echo $form->textField($user_model,'username',array('class'=>'inputBg','id'=>'User_username')); ?>
<!--表单验证失败显示错误信息-->
<?php echo $form ->error($user_model,'username'); ?
>
</td>
</tr>
<tr>
<td align="right">
<?php echo $form->label($user_model, 'password'); ?>
</td>
<td>
<?php echo $form->passwordField($user_model,'password',array('class'=>'inputBg','id'=>'User_password')); ?>
<?php echo $form ->error($user_model,'password'); ?
>
</td>
</tr>
<!-- <tr>
<td align="right"><label for="User_password2">密码确认</label></td>
<td>
<input class="inputBg" size="25" name="User[password2]" id="User_password2" type="password" />
</td>
</tr>-->
<tr>
<td align="right"><?
php echo $form->label($user_model, 'user_email'); ?></td>
<td>
<?php echo $form->textField($user_model,'user_email',array('class'=>'inputBg','id'=>'User_user_email')); ?>
</td>
</tr>
<tr>
<td align="right"><?php echo $form->label($user_model, 'user_qq'); ?></td>
<td>
<?php echo $form->textField($user_model,'user_qq',array('class'=>'inputBg','id'=>'User_user_qq')); ?>
</td>
</tr>
<tr>
<td align="right"><?
php echo $form->label($user_model, 'user_tel'); ?></td>
<td>
<?
php echo $form->textField($user_model,'user_tel',array('class'=>'inputBg','id'=>'User_user_tel')); ?>
</td>
</tr>
<tr>
<!--radioButtonList($model,$attribute,$data,$htmlOptions=array())-->
<td align="right"><?
php echo $form->label($user_model, 'user_sex'); ?
></td>
<td>
<?
php echo $form->radioButtonList($user_model,'user_sex',$sex,array('separator'=>' ')); ?>
</td>
</tr>
<tr>
<!--dropDownList($model,$attribute,$data,$htmlOptions=array())-->
<td align="right"><?php echo $form->label($user_model, 'user_xueli'); ?
></td>
<td>
<?
php echo $form -> dropDownList($user_model,'user_xueli',$xueli); ?>
</td>
</tr>
<tr>
<!--checkBoxList($model,$attribute,$data,$htmlOptions=array())-->
<td align="right"><?
php echo $form->label($user_model, 'user_hobby'); ?></td>
<td>
<?php echo $form -> checkBoxList($user_model,'user_hobby',$hobby,array('separator'=>' ')); ?>
</td>
</tr>
<tr>
<!--textArea($model,$attribute,$htmlOptions=array())-->
<td align="right"><?php echo $form->label($user_model, 'user_introduce'); ?
></td>
<td>
<?php echo $form -> textArea($user_model,'user_introduce',array('cols'=>50,'rows'=>5)); ?>
</td>
</tr>
<tr>
<td> </td>
<td align="left">
<input name="Submit" value="" class="us_Submit_reg" type="submit" />
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</tbody>
</table>
<?
php $this->endWidget(); ?>
</div>
</div>
</div>
<!--放入view详细内容-->
</div>
模板主要是这几个html控件
主要是这几个样式
label ------》 label()
text ---------》textField()
area -------》 textArea()
checkbox ------》 checkBoxList()
radio ------------> radioButtonList()
password -------->passwordField()
error ---------------》 这个进行表单验证 输出错误信息
这几个第一个參数都是控制器要传递过来的模型。第二个參数是数据库表字段。第三个是样式设置,为数组形式,第四个是一些特殊分隔符 如单选按和复选框。
关于第四个參数追踪:
就到了以下这个函数定义
再次查找:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
找到CHtml类文件里上面引用函数
最后一次查找啦:
就此搞定。这仅仅是简单应用啦!
高级还在明天啦!
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
YII用户注冊表单的实现熟悉前台各个表单元素操作方式的更多相关文章
- YII用户注冊和用户登录(三)之模型中规则制定和分析
3 模型中规则制定和分析 YII模型主要分为两类,一个数据模型,处理和数据库相关的增删改查.继承CActiveRecord.还有一个是表单模型,继承CFormModel.不与数据库进行交互.操作与数据 ...
- YII用户注冊和用户登录(二)之登录和注冊在视图通过表单使用YII小物件并分析
2 登录和注冊在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClie ...
- YII用户注冊和用户登录(五)之进行session和cookie分析 ,并在前后区分session和cookie
5 进行session和cookie分析 ,并在前后区分session和cookie: 记住登录状态 这样下次再登录站点的时候.就不用反复输入username和password. 是浏览器的cooki ...
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)
近期看老罗视频,做了一个简单的用户注冊系统.用户通过网页(JSP)输入用户名.真名和password,Servlet接收后通过JDBC将信息保存到MySQL中.尽管是个简单的不能再简单的东西,但麻雀虽 ...
- struts2学习笔记(三)—— 在用户注冊程序中使用验证框架
实现目标: 1.使用验证框架对用户注冊信息进行验证 2.验证username.password.邮箱不能为空 3.验证username.password长度 ...
- Django 介绍、安装配置、基本使用、Django 用户注冊样例
Django介绍 Django 是由 Python 开发的一个免费的开源站点框架.能够用于高速搭建高性能.优雅的站点. DjangoMTV 的思想项目架构图 ...
- WordPress改动新用户注冊邮件内容--自己定义插件
有些开放用户注冊功能的WordPress站点,可能有这么一项需求,就是用户注冊成功后,系统会分别给站点管理员和新用户发送一封通知邮件.给管理员发送的是新用户的username和Email,给刚刚注冊的 ...
- Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)
接着上两篇文章.我们基于Bmob提供的API实现用户登录功能.总体看一下代码. 1.注冊页面xml: <RelativeLayout xmlns:android="http://sch ...
- Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)
接上一篇,加入验证用户名是否已经注冊功能! 仅仅须要改动MainActivity.java: package com.example.logintest; import java.util.List; ...
随机推荐
- Codeforces 1039A. Timetable
题目地址:http://codeforces.com/problemset/problem/1039/A 题目的关键在于理清楚思路,然后代码就比较容易写了 对于每一个位置的bus,即对于每一个i(i& ...
- 复制对象 copy 与mutable copy
转载 : http://blog.csdn.net/u010962810/article/details/18887841 通过copy方法可以创建可变对象或不可变对象的不可变副本,对于不可 ...
- python requests的安装与简单运用(转)
http://www.cnblogs.com/fightformylife/p/4134986.html http://cn.python-requests.org/zh_CN/latest/ htt ...
- Android的日志工具Log
Android中的日志工具类是Log(android.util.Log),这个类提供了以下几个方法来供我们打印日志. ♦ Log.v():这个方法用于打印那些最为琐碎的,意义最小的日志信息.对应级别v ...
- [CTSC2018]混合果汁(二分答案+主席树)
考场上写了60分的二分答案,又写了15分的主席树,然后就弃了.. 合起来就A了啊!主席树忘了开20倍空间最后还炸掉了. 最水的签到题被我扔了,主要还是不会用线段树求前缀和. 做法应该是比较显然的,首先 ...
- Exercise01_02
public class Five{ public static void main(String[] args){ for(int i=0;i<5;i++){ System.out.print ...
- java--模板方法模式
/* 需求:获取一段程序的运行时间 原理:获取程序开始和结束的时间并相减即可 获取时间:用java中已有的一个类:System.currentTimeMillis(); 当代码完成优化后,就可以解决这 ...
- 7zip File: How to Uncompress 7z files on Ubuntu, Debian, Fedora
转:http://www.thegeekstuff.com/2010/04/7z-7zip-7za-file-compression/ Question: How do I uncompress a ...
- mq使用经验
1.Producer使用指南--发送消息注意事项 1.正常情况下一个业务系统尽可能用一个Topic,消息子类型用tags来标识,tags可以由业务系统自由设置.只有发送消息设置了tags,消费方在订阅 ...
- Sublime Text:格式化插件HTML-CSS-JS Prettify
Sublime Text:插件HTML-CSS-JS Prettify可以格式化HMTL/CSS/JS 1.安装Node.js 2.Sublime中ctrl+shift+p,输入ip: 3.点击Ins ...