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&amp;&amp;mysql)一
Oct 09 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
php 数组二分法查找函数代码
Feb 16 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
深入解析php之sphinx
May 15 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
自制PHP框架之设计模式
May 07 PHP
PHP代码覆盖率统计详解
Jul 22 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字符串截取的简单方法
2013/07/04 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
制作特殊字的脚本
2006/06/26 Javascript
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
技术总监的工作职责
2013/11/13 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
便利店促销方案
2014/02/20 职场文书
学生评语大全
2014/04/18 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2014年保卫工作总结
2014/12/05 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
python状态机transitions库详解
2021/06/02 Python
GPU服务器的多用户配置方法
2022/07/07 Servers