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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
drupal 代码实现URL重写
May 04 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
php强制运行广告的方法
Dec 01 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 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 身份证号验证函数
2009/05/07 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
js获取div高度的代码
2008/08/09 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python退出循环的方法
2020/06/18 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
个人简历自我评价八例
2013/10/31 职场文书
党的生日演讲稿
2014/09/10 职场文书
安全先进班组材料
2014/12/26 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL