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 auth_http类库进行身份效验
Mar 19 PHP
Zend的Registry机制的使用说明
May 02 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
linux下编译安装memcached服务
Aug 03 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
PHP架构及原理知识点详解
Dec 22 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 字符串分割和比较
2009/10/06 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
joomla数据库操作示例代码
2016/01/06 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
详解Python用户登录接口的方法
2019/04/17 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
python numpy库np.percentile用法说明
2020/06/08 Python
用Python开发app后端有优势吗
2020/06/29 Python
python3让print输出不换行的方法
2020/08/24 Python
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
年度考核自我鉴定
2014/02/02 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
学生检讨书范文
2014/10/30 职场文书
2014年学校工作总结
2014/11/20 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL