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; ...
随机推荐
- 树上两点的最近公共祖先问题(Least Common Ancestors)
概念: 对于有根树T的两个节点u,v,最近公共祖先LCA(T, u, v)表示一个节点 x, 满足 x 是 u , v 的祖先且 x 的深度尽可能的大.即从 u 到 v 的路径一定经过点 x. 算法: ...
- 非负整数可重集去重&排序+获得可重集的全排列的几种方法
非负整数可重集O(n)去重并排序 可重集是指元素可重复的集合,对于在一定区间内的正整数集,比如[1,n],我们可以在不不使用任何额外空间(包括不使用O(1)的空间)的情况下,用O(n)的时间复杂度完成 ...
- mysql对表的操作
创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...
- Hibernate所有缓存机制详解
hibernate提供的一级缓存 hibernate是一个线程对应一个session,一个线程可以看成一个用户.也就是说session级缓存(一级缓存)只能给一个线程用,别的线程用不了,一级缓存就是和 ...
- [xsy2300]好题
题意:有一棵树,每个节点有颜色,要找出最小的连通块使得其中的点至少有$k$种不同的颜色,只需输出这个最小连通块的大小 因为$k$很小,所以如果颜色只有$k$种,我们可以直接状压DP,设$f_{i,j} ...
- 【并查集】bzoj2054 疯狂的馒头
因为只有最后被染上的颜色会造成影响,所以倒着处理,用并查集维护已经染色的区间的右端点,即fa[i]为i所在的已染色区间的右端点,这样可以保证O(n)的复杂度. #include<cstdio&g ...
- 7.3(java学习笔记)网络编程之UDP
一.UDP UDP的全称是User Datagram Protocol(用户数据报协议),是一种无连接的不安全的传输协议, 传输数据时发送方和接收方无需建立连接,所以是不安全的. 发送时不建立连接直接 ...
- 求小于10000的素数的个数 Exercise06_10
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求小于10000的素数的个数 * */ public class Exercise06_10 { public static ...
- Bootstrap-table实现动态合并相同行(表格同名合并)
写在前面: 有时候表格的需求就是奇奇怪怪的,最近要做的表格需要实现当紧挨着的记录的某一列的行元素内容相同,就将其合并.要是不是相同的就不合并.如果表格数据的顺序不需要被改变,这个样子是可以很简单就完成 ...
- css中width和height默认值
width和height默认都是auto自动伸缩的,但不同的标签效果却不一样比如div默认是width:100%,通常不用写100%如果是table,如果div内的table没有设定100%,那就是最 ...