php的yii框架开发总结10
2024-09-08 08:03:40
1、CActiveForm是Chtml类的封装,但是它有数据验证的功能,有三种方式:服务器端、客户端、Ajax数据验证。
- 服务器端验证:当整个表单页面被提交后,在服务器端 进行验证。如果存在任何验证错误,CActiveForm将把错误 信息显示在用户页面上。
- 基于AJAX的验证:当用户在输入框中输入了数据, 需要在服务器端进行验证的输入框将触发一个AJAX验证。 验证结果通过AJAX response返回,输入框也根据返回结果 相应的改变它的显示行为。
- 客户端验证: 当用户在输入框中输入数据, 验证动作将在客户端通过JavaScript执行。由于没有产生与服务器端的通讯,这种方式可以降低服务器的负荷。
特点:服务器端的验证始终被执行,Ajax和客户端的数据验证可以设置:enableAjaxValidation和enableClientValidation设置true或false。
基于AJAX的验证和客户端验证可以同时使用,也可以分开使用。例如,在用户注册表单中,可以使用基于AJAX的验证来检查用户是否选择了未重复的用户名,使用客户端验证来确保所有需要有内容的字段都被输入了内容。 因为基于AJAX的验证可能增加服务器的额外负荷,在可能的情况下我们应当尽可能地使用客户端验证。
验证规则:CValidator基类。视图文件使用CActiveForm类
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
)); ?> <?php echo $form->errorSummary($model); ?> <div class="row">
<?php echo $form->labelEx($model,'firstName'); ?>
<?php echo $form->textField($model,'firstName'); ?>
<?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'lastName'); ?>
<?php echo $form->textField($model,'lastName'); ?>
<?php echo $form->error($model,'lastName'); ?>
</div> <?php $this->endWidget(); ?>如何响应Ajax验证:
public function actionCreate()
{
$model=new User;
$this->performAjaxValidation($model);//这一句调用Ajax验证方法。
if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
if($model->save())
$this->redirect('index');
}
$this->render('create',array('model'=>$model));
} protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
最新文章
- mysql 性能优化方案
- BZOJ2728: [HNOI2012]与非
- android使用默认程序进行图片拍照已经裁剪,以及设备读取
- 简单BigDecimal运算精度
- Windows桌面共享中一些常见的抓屏技术
- Unsupported major.minor version 51.0解决
- Java 获取距离最近一段时间的时间点
- [转载]maven基础入门
- spark-shell 执行脚本并传入参数
- xml约束之schema
- ajax调用handler,使用HttpWebRequest访问WCF服务
- 浅谈Kubernetes生产架构
- Linux虚拟机配置(新猿旺学习总结)
- luogu3811 乘法逆元
- Effective java第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
- SVG的用法
- not in 的优化
- iOS.XcodeUsage
- jquery banner 轮播配置方法
- JS脚本动态给元素/控件添加事件