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 include加载文件两种方式效率比较
Aug 08 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
cakephp常见知识点汇总
Feb 24 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
php经典趣味算法实例代码
Jan 21 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
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
php生成word并下载代码实例
2019/03/15 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python基于property()函数定义属性
2020/01/22 Python
Python 解析简单的XML数据
2020/07/24 Python
C语言如何决定使用那种整数类型
2016/11/26 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
初婚未育证明样本
2015/06/18 职场文书
七一活动主持词
2015/06/29 职场文书
《检阅》教学反思
2016/02/22 职场文书