yii ajax验证失败返回提示,Yii使用ajax验证显示错误messagebox的解决方法
本文实例讲述了Yii使用ajax验证显示错误messagebox的解决方法。分享给大家供大家参考。具体方法如下:
yii 自带了ajax 表单验证 这个可能有些朋友不知道了,但我今天在使用yii 自带的ajax 表单验证 时碰到一些问题,下面我来整理例子与大家参考一下。
在Yii中,可以利用ajax执行一个action,但是这个action有时候会有弹出错误讯息的需求,这时候的处理方式如下
基本思想
利用exception,比如:
throw new CHttpException(403, 'You are not authorized to perform this action.');
如果这个异常是 CHttpException 或者 YII_DEBUG 为 true的时候,错误消息可以通过CErrorHandler::errorAction来显示。在yiic默认生成的代码中,就是通过在 config/main.php 中加入如下代码来实现的
'errorHandler' => array(
'errorAction' => 'site/error',),
但是在Yii 1.1.9 以上,ajax请求抛出的exceptions是通过CApplication::displayException()来显示的。这使得我们无法定制消息的显示方式。
CGridView 删除请求抛出异常的话就是这个样子,(YII_DEBUG 为 true )
Yii 1.1.9 检查ajax请求的逻辑被移除了,所以现在即便是ajax的异常也是通过CErrorHandler::errorAction处理的。
这样ajax的消息就可以DIY了。
示例
通过如下代码
public function actionError(){
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
后来又发现一个站长分享了一段代码
model:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('content, author, email', 'required'),
array('author, email, url', 'length', 'max'=>128),
array('email','email'),
array('url','url'),
);
}
controller:
if(isset($_POST['ajax']) && $_POST['ajax']==='comment-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
view:
<?php $form=$this->beginWidget('CActiveForm',array(
'id'=>'post-form', //这是表单id
'enableAjaxValidation'=>true, //这里一定写 true
)); ?>
echo $form->labelEx($model,'title');
?>
<?php echo $form->textField($model,'title',array('size'=>80,'maxlength'=>128));
?>
echo $form->error($model,'title');
?>
echo $form->labelEx($model,'content');
?>
echo CHtml::activeTextArea($model,'content',array('rows'=>10, 'cols'=>70));
?>
You may use Markdown syntax.
echo $form->error($model,'content');
?>
$this->endWidget();
?>
这样好像很好的解决了yii ajax显示问题。
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
yii ajax验证失败返回提示,Yii使用ajax验证显示错误messagebox的解决方法相关推荐
- yii ajax验证失败返回提示,Yii ajax显示错误提示,messagebox
在Yii中,可以利用ajax执行一个action,但是这个action有时候会有弹出错误讯息的需求,这时候的处理方式如下 基本思想 利用exception,比如 throw new CHttpExce ...
- Delphi7 提示can‘t load package *.bpl 错误问题的解决方法
一般是环境变量没有包含Delphi 安装目录: C:\Program Files (x86)\Delphi7\Projects\Bpl 如果确认有的话,并且提示的文件也存在的话,win10电脑刚装完d ...
- EF提示一例对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性的解决
EF提示一例对一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性的解决 在向数据库添加数据时出现该错误. 对出先错误的语句进行try ...
- idea验证失败_iphone x验证失败怎么办?苹果iphone x验证失败的解决方法
前几日刚入手iphone x,今天发现iphone x验证失败了,不知道什么原因最后研究了一番发现是网络的原因,那么如何解决呢?下面由我带给大家iphonex验证失败,苹果x验证失败解决方案. 苹果i ...
- sql服务器网页无法连接到服务器失败,SQL2008无法连接到服务器,用户’XX’登录失败(错误18456)解决方法...
SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法 SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方 ...
- 重装系统 计算机意外遇到错误无法运行,win7系统重装笔记本提示"计算机意外的重新启动或遇到错误"的解决方法...
今天和大家分享一下win7系统重装笔记本提示"计算机意外的重新启动或遇到错误问题的解决方法,在使用win7系统的过程中经常不知道如何去解决win7系统重装笔记本提示"计算机意外的重新启动或遇到错误的问 ...
- Win10无法开机提示自动修复无法修复你的电脑的有效解决方法
最近Win10系统出现了无法开机并无法自动修复系统的问题,然后提示了"自动修复,无法修复你的电脑",在高级选项中尝试安全模式也无法进入.那么遇到这个问题,在不重装系统的情况下,我们 ...
- 安装Windows提示无法在驱动器0分区上安装windows解决方法
在通过U盘或光盘安装win8/win8.1/win10系统时,不少用户遇到无法安装的问题,提示"无法在驱动器0的分区1上安装windows",格式化分区1也不能解决,进而提示Win ...
- 为什么电脑浏览器显示时钟快了_xp打开网页提示“你的时钟慢了”的原因及解决方法...
近期,一位小伙伴反馈说xp系统打开网页提示"你的时钟慢了,您计算机的日期和时间不正确,因此无法与www.baidu.com建立私密连接"这个问题的出现,一般是我们电脑的时钟回到出厂 ...
最新文章
- mysql opensuse_opensuse免安装mysql
- 十招搞定SQL2K安全
- Python之数据拆分——groupby()方法
- 3.5 訪问者模式(5.11)
- 海南大学信号与系统838考研经验(3)
- Xcode9安装插件,xcode9安装使用Alcatraz
- Blazor使用PDFObject预览pdf文件
- mysql 生成随机手机号和随机中文名
- ITIL 4Foundation认证
- So Different You Are
- 英语学习——长难句01
- Spring Boot电商项目57:订单模块六:【前台:生成支付二维码】接口;(支付url的拼凑;利用zxing生成二维码;二维码图片的存储;真实地址与可访问地址的转换;)
- python unicode码转换_python实现unicode转中文及转换默认编码的方法
- Windows下免杀思路总结
- fish shell一个专为90后设计的命令行shell
- WSS、SSL 和 https 之间的关系
- 春季人才市场外企就业竞争最激烈销售岗位需求量最大
- 如何在程序中创建快捷方式?
- Navicat Premium for Mac 快捷键
- 一个简单的SpringMVC需要哪些jar包[Spring4]
热门文章
- 如何向妈妈解释什么是爬虫
- 如何通俗的理解函数的极限_函数的极限问题怎么解释更通俗易懂?初高中数学辅导...
- 微信小程序之发送通知消息(通过openid推送消息给用户)
- C语言RSA实现对字符串加密,C语言实现RSA加解密算法
- 2023版golang面试题100道(map)
- 英飞凌TC387学习
- SA387Gr22Cl2美标容器板介绍,SA387Gr22Cl2钢板规格8-90mm厚
- Xilinx SDK编译Microblaze时出错
- 【Yolo3】入门目标检测实验--Python+Opencv2+dnn
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法