控制器showmessage介绍和使用

来自ECJiaWiki
跳转至: 导航搜索

控制器showmessage介绍和使用

介绍

showmessage是ECJIA 控制器基础类系统提示信息方法,是到家系统用的最多的方法之一。支持各种消息类型的输出。

方法说明

  • 系统提示信息
参数 类型 说明
$message string 消息内容
$type int 消息类型
$options array 消息可选参数
  • 消息类型:(0:html, 1:alert, 2:json, 3:xml)(0:错误,1:成功,2:消息, 3:询问)

补充:

ecjia基础控制类:

/**
 * MSG types
 */
const MSGTYPE_HTML		= 0x00;
const MSGTYPE_ALERT		= 0x10;
const MSGTYPE_JSON		= 0x20;
const MSGTYPE_XML		= 0x30;

/**
 * MSG stats
 */
const MSGSTAT_ERROR             = 0x00;
const MSGSTAT_SUCCESS           = 0x01;
const MSGSTAT_INFO              = 0x02;
const MSGSTAT_CONFIRM           = 0x03;

1. MSG types 消息类型:

  • MSGTYPE_HTML:HTML类型
  • MSGTYPE_ALERT:ALERT类型
  • MSGTYPE_JSON:JSON类型
  • MSGTYPE_XML:XML类型

2. MSG stats 消息状态:

  • MSGSTAT_ERROR: 错误
  • MSGSTAT_SUCCESS: 成功
  • MSGSTAT_INFO: 消息
  • MSGSTAT_CONFIRM: 询问

示例

1、XML的格式返回正确提示消息"中奖了"。

return ecjia_front::$controller->showmessage('中奖了"', ecjia::MSGTYPE_XML | ecjia::MSGSTAT_SUCCESS);

2、HTML的格式返回错误提示消息"消息不存在"。

return ecjia_front::$controller->showmessage('信息不存在', ecjia::MSGTYPE_HTML | ecjia::MSGSTAT_ERROR);

3、ALERT的格式返回错误提示消息"订单不存在"。

return ecjia_front::$controller->showmessage('订单不存在'), ecjia::MSGTYPE_ALERT | ecjia::MSGSTAT_ERROR);

4、Json的格式返回正确提示消息"登陆成功",并传递'url'参数。

return ecjia_front::$controller->showmessage('登录成功', ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('url' => $back_url));

5、Json的格式返回正确提示消息"切换状态成功",并传递'content'、'pjaxurl'参数。

return ecjia_front::$controller->showmessage('切换状态成功', ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('content' => $val, 'pjaxurl' => RC_Uri::url('weapp/admin/init')));

如何在到家项目中使用showmessage返回的pjaxurl实现pjax跳转

控制器showmessaged的通过简单易读的方法实现了返回各类数据信息和传参,还能返回pjaxurl链接,配合到家项目可以轻松实现pjax跳转。

一、首先新增一个app模块

参考:

如何快速创建一个App模块

如何快速创建一个App模块(1.18.0及后续版本)

二、在需要返回参数的用showmessage

// 略
return ecjia_front::$controller->showmessage('成功', ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('content' => $val, 'pjaxurl' => RC_Uri::url('weapp/admin/init')));
// 略

在js目录下新建一个js,控制器中引用该js

  • 存放在应用模块下statics目录下,js文件放在js目录下
├── test //app模块目录
│   ├── statics  //静态资源存放文件夹
│   │   ├── js

新增一个test.js。

并在控制器的构造函数中引用该js,注意一般情况下,自建的js放在底部,即RC_Script::enqueue_script的第5个参数设置为1:

// 略
RC_Script::enqueue_script('affiliate', RC_App::apps_url('statics/js/affiliate.js', __FILE__), array(), false, 1);
// 略

编辑js,采用到家js编写规范

JS 编写规范:

;(function(ecjia, $) {   
    app.test = {
        init : function(){            // 声明init方法
           ecjia.admin.test.fun1()    //  这里调取方法
        },
       fun1 : function(){            //  声明 fun1 方法
                                      // 编写方法内容
       }, 
       fun2 : function(){},
       fun3 :function(){},
       ......
    };
})(ecjia, jQuery);

/*=====================================================================*/
模板文件调取:
ecjia.admin.test.init() // 这里直接就能调取到 ecjia.admin.test.init() 方法里面的调取的方法

ecjia.admin.test.fun1(); // 这样可以直接调取到 fun1方法 而不经过init()方法

在js处理showmessage返回数据的地方,使用ecjia.pjax()实现pjax跳转

到家项目如果采用了到家js编写规范,将可以使用很多便携的方法,pjax就是其中之一,例:

fun1: function () {
    $('.test-btn').off('click').on('click', function (e) {
        e.preventDefault();
        var url = $("form[name='test_from']").attr('action');
        ecjia.pjax(url); // 使用 ecjia.pjax()实现pjax跳转
    });
},

到家案例

平台后台

1、当广告模块添加菜单组出现错误的时候,返回错误消息:

return $this->showmessage(__('该菜单组代号在当前城市中已存在', 'adsense'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

2、当广告模块添加菜单组成功当时候,返回成功信息,并返回带参数的pjax链接:

return $this->showmessage(__('添加菜单组成功', 'adsense'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('pjaxurl' => RC_Uri::url('adsense/admin_shortcut/edit_group', array('position_id' => $position_id, 'city_id' => $city_id))));

3、当推广模块添加分成出现错误的时候,返回错误信息:

return $this->showmessage(__('最多可以设5个级别!', 'affiliate'), ecjia::MSGTYPE_HTML | ecjia::MSGSTAT_ERROR);

4、当推广模块添加分成成功的时候,返回成功信息,并返回pjax链接和一个参数:

return $this->showmessage(__('编辑成功', 'affiliate'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('content' => $val, 'pjaxurl' => RC_Uri::url('affiliate/admin/init')));

5、当城市代理模块添加代理出现错误的时候,返回错误信息:

return $this->showmessage(__('该代理商名称已存在', 'agent'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

6、当城市代理模块编辑代理成功的时候,返回成功信息,并返回带参数的pjax连接:

return $this->showmessage(__('编辑成功', 'agent'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('pjaxurl' => RC_Uri::url('agent/admin/edit', array('id' => $id))));

7、当文章模块添加文章出现错误的时候,返回错误信息:

return $this->showmessage(__('文章描述不能为空', 'article'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR );

8、当文章模块编辑文章标题成功的时候,返程成功信息,并返回一个参数:

return $this->showmessage(__('文章标题编辑成功', 'article'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('content' => stripslashes($title)));

9、当红包模块添加红包类型错误的时候,返回错误信息:

return $this->showmessage(__('此类型的名称已经存在!', 'bonus'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

10、当红包模块发放红包成的时候,返回成功信息,并返回一个参数:

return $this->showmessage(__('生成了 ', 'bonus') . $j . __(' 个红包序列号', 'bonus'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('max_id' => $bonus_typeid));

11、当验证码模块切换验证码错误的时候,返回错误信息:

return $this->showmessage(__('启用验证码样式失败。', 'captcha'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

12、当验证码模块切换验证码成功的时候,返回成功信息,并返回pjax链接:

return $this->showmessage(__('启用验证码样式成功。', 'captcha'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('pjaxurl' => RC_Uri::url('captcha/admin/init')));

13、当保存页面模版成功的时候,返回成功信息:

return $this->showmessage(__('保存模板内容成功。', 'mail'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS);

14、当保存页面模版错误的时候,返回错误信息:

return $this->showmessage(__('保存模板内容失败。', 'mail'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

15、当邮件服务器设置成功当时候,返回成功信息,并返回pjax链接,跳转到邮件服务器设置页面:

return $this->showmessage(__('邮件服务器设置成功。', 'mail'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS,array('pjaxurl' => RC_Uri::url('mail/admin_mail_settings/init')));

16、当添加专题成功当时候,返回成功信息,并返回pjax链接,跳转到新添加专题到编辑页面:

return $this->showmessage(__('添加专题成功', 'topic'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('links' => $links, 'pjaxurl' => RC_Uri::url('topic/admin/edit', array('id' => $topicid))));

商家后台

1、当后台删除商品属性成功时,返回成功信息:

return $this->showmessage(__('删除成功', 'goods'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS);

2、当输入小于0当参数时(实际必须输入大于0当参数),返回错误信息:

return $this->showmessage(__('请输入大于0的整数', 'goods'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);

3、当添加规格属性成功的时候,返回成功信息,并返回规格属性:

return $this->showmessage(sprintf(__('添加规格属性 [%s] 成功', 'goods'), $attr['attr_name']), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_SUCCESS, array('pjaxurl' => RC_Uri::url('goods/mh_spec_attribute/edit', array('attr_id' => $attr_id))));

H5

1、当定位失败当时候,返回错误信息,并返回地址跳转到指定页面:

return ecjia_front::$controller->showmessage(__('定位失败,请手动选择', 'mendian'), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR, array('url' => $url));

2、某个订单不存在,返回错误信息:

return ecjia_front::$controller->showmessage(sprintf('订单 %s 不存在', $from_order_sn), ecjia::MSGTYPE_JSON | ecjia::MSGSTAT_ERROR);