Yii框架表单提交验证功能分析


Posted in PHP onJanuary 07, 2017

本文实例讲述了Yii框架表单提交验证功能。分享给大家供大家参考,具体如下:

一、前端提交的三种方式

前面已经提出,表单提交一共只有三种方式。

1. 前端原生html

(1)原生html标签

首先,直接使用html标签的input,a等;
其次,使用css进行布局。
再次,使用js或jquery方式验证
最后,提交(get/post/ajax,目前较多使用jquery提交)。
注:该种方式由于较灵活,使用最多。

(2)原生form

js或jquery方式验证,yii方式提交。

相对灵活

<form ... onSubmit="return validationFunc">
...
</form>
<script type="text/javascript">
function validationFunc(){
  //验证逻辑
}
</script>

批注:如果仅仅使用表单自带的onsubmit验证不够,也可以采用第一种办法。此时就不要使用form自带的submit按钮了。

2,前端使用yii自带widget

(3)yii方式验证、提交。

① 自带blog登陆表单

<?php
    $form=$this->beginWidget('CActiveForm', array(
      'id'=>'login-form',
      'enableClientValidation'=>true,
      'clientOptions'=>array(
        'validateOnSubmit'=>true,
      ),
    ));
  ?>

② 上传用户头像时

<?php $form=$this->beginWidget('CActiveForm', array(
  'id'=>'user-form',
  'enableAjaxValidation'=>false,
  'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>

③ 看到的一个例子

<?php $form=$this->beginWidget('CActiveForm',array(
  'id'=>'login-from',
  'enableAjaxValidation'=>true,
  'action'=>'array('site/login'),
  )
)
?>

此时用到yii的表单验证功能。需要model+controller+view配合使用。详见:yii指南。

Yii方式验证、提交

① 首先,在model的rules(){return array();}设置验证规则

② 其次,在view里使用errorMessage,label,field,error

<?php echo $form->labelEx($model,'author'); ?>
<?php echo $form->textField($model,'author',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'author'); ?>

3,最后,在controller里

使用

$model = new Post;
$model->attributes=$_POST['Post'];

yii判断提交方式

Yii::app()->request->isPostRequest

效率比较:

(1)效率最差;
(2)效率中等;
(3)效率最高。

二、Yii在后端接收前端传来值的两种方式

1,通过二维数组$_POST['ClassName']

如果前端的表单是关于某一个model的,可以用此方法。使用较多。

例如:

$model->attributes=$_POST['Post'];
$comment->attributes=$_POST['Comment'];

还可以添加:

$comment->post_id=$this->id;

强制数据提交

$model->save(false)

2,获取get或post请求的值$this->request->getParam('key');

(1)form表单提交

前端:

<form>
<input type="text" name="belongs_to" />
<input type="submit" value="提交" />
</form>

后端:

$this->request->getParam('belongs_to');

(2)jquery的post提交

$this->request->getParam('key1');

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP脚本的10个技巧(8)
Oct 09 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
Yii框架弹出框功能示例
Jan 07 #PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 #PHP
PHP验证码类ValidateCode解析
Jan 07 #PHP
PHP缩略图生成和图片水印制作
Jan 07 #PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 #PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 #PHP
PHP中仿制 ecshop验证码实例
Jan 06 #PHP
You might like
php生成文件
2007/01/15 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
基于initPHP的框架介绍
2013/04/18 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
jquery 问答知识整理
2010/02/11 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
委托收款证明
2015/06/23 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL