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+mysql)
Nov 23 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP实现动态web服务器方法
Jul 29 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP数组实例详解
Jun 26 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 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
克隆一个新项目的快捷方式
2013/04/10 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
python中常见错误及解决方法
2020/06/21 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
个人考核材料
2014/05/15 职场文书
继承权公证书范本
2015/01/23 职场文书
党员承诺书范文2015
2015/04/27 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS