Yii使用ajax验证显示错误messagebox的解决方法


Posted in PHP onDecember 03, 2014

本文实例讲述了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

)); ?>

    <?php echo CHtml::errorSummary($model); ?>
    <div class="row">

        <?php

 echo $form->labelEx($model,'title');

 ?>

        <?php echo $form->textField($model,'title',array('size'=>80,'maxlength'=>128));

 ?>

        <?php

 echo $form->error($model,'title');

 ?>

    </div>
    <div class="row">

        <?php

 echo $form->labelEx($model,'content');

 ?>

        <?php

 echo CHtml::activeTextArea($model,'content',array('rows'=>10, 'cols'=>70));

 ?>

        <p class="hint">You may use <a target="_blank" href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a>.</p>

        <?php

 echo $form->error($model,'content');

 ?>

    </div>

 

<?php

$this->endWidget();

?>

这样好像很好的解决了yii ajax显示问题。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一周让你学会PHP 不错的学习资料
Feb 06 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
javascript some()函数用法详解
Nov 13 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
php显示页码分页类的封装
Jun 08 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
May 02 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 #PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 #PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 #PHP
Yii实现多按钮保存与提交的方法
Dec 03 #PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 #PHP
Yii框架登录流程分析
Dec 03 #PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 #PHP
You might like
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
php实现记事本案例
2020/10/20 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python运算符重载详解及实例代码
2017/03/07 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Django在Model保存前记录日志实例
2020/05/14 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
linux面试题参考答案(11)
2016/11/26 面试题
科学发展观演讲稿
2014/09/11 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
维稳工作情况汇报
2014/10/27 职场文书
工程移交协议书
2016/03/24 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python