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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
自我评价格式
2014/01/06 职场文书
生日派对邀请函
2014/01/13 职场文书
铅球加油稿100字
2014/09/26 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
销售会议开幕词
2015/01/28 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
python 命令行传参方法总结
2021/05/25 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电