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企业级应用之常见缓存技术篇
Jan 27 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
详解PHP中的null合并运算符
Dec 30 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
详解phpstorm2020最新破解方法
Sep 17 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/03/06 PHP
基于PHP文件操作的详解
2013/06/05 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Django的models模型的具体使用
2019/07/15 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python怎么对数字进行过滤
2020/07/05 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
给校长的建议书500字
2014/05/15 职场文书
行政求职信
2014/07/04 职场文书
消防安全月活动总结
2015/05/08 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
工厂无线对讲系统解决方案
2022/02/18 无线电
java开发双人五子棋游戏
2022/05/06 Java/Android