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 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
用phpmyadmin更改mysql5.0登录密码
Mar 25 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
PHP之密码加密的几种方式
Jul 29 PHP
PHP中filter函数校验数据的方法详解
Jul 31 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
php下的原生ajax请求用法实例分析
Feb 28 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP 高级课程笔记 面向对象
2009/06/21 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php字符串分割函数用法实例
2015/03/17 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
js密码强度检测
2016/01/07 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
python实现简单温度转换的方法
2015/03/13 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
数控机械专业个人的自我评价
2014/01/02 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
考博专家推荐信
2014/05/10 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
给上级领导的感谢信
2015/01/22 职场文书
培训师岗位职责
2015/02/14 职场文书
英语通知范文
2015/04/22 职场文书