showmessage() 是 PHPCMS 中一个非常核心和常用的函数,主要用于在操作完成后,向用户显示一个提示信息,并可以跳转到指定页面,它封装了页面跳转和提示信息展示的逻辑,使得开发更加便捷。

(图片来源网络,侵删)
函数基本语法
showmessage() 函数的基本语法如下:
showmessage($message, $jumpurl, $second = '3', $type = 'success', $isajax = false);
参数详解
下面我们来逐一解析每个参数的含义和作用。
$message (必需)
- 类型:
string - 含义: 要显示给用户的提示信息,这是最核心的参数,用户在页面上直接看到的就是这个内容。
- 示例:
'操作成功!''用户名已存在,请更换!''文章删除失败,请重试。'
$jumpurl (可选)
- 类型:
string - 含义: 跳转的目标 URL 地址,在显示提示信息一段时间后,页面会自动跳转到这个地址。
- 默认值: (空字符串)
- 常见用法:
- 跳转到首页:
'index.php'或 (根据网站根目录配置) - 跳转到上一页:
'javascript:history.back(-1);'或'-1'(这是 PHPCMS 的一个特殊值,会自动处理成返回上一页) - 跳转到指定模块:
'?m=content&c=index&a=index' - 跳转到指定页面:
'http://www.example.com'
- 跳转到首页:
$second (可选)
- 类型:
integer或string - 含义: 页面停留跳转的时间(单位:秒),用户会看到提示信息,并等待指定的时间后页面才跳转。
- 默认值:
'3'(字符串类型的3) - 示例:
showmessage('正在处理...', '?m=order', '5');// 页面将停留5秒后跳转- 如果不希望自动跳转,可以设置
$jumpurl为'-1'或 ,并将$second设置为0。
$type (可选)
- 类型:
string - 含义: 提示信息的类型,这通常决定了提示信息的样式(如颜色、图标等)。
- 默认值:
'success' - 常见类型及对应的样式:
'success'(成功): 通常显示为绿色,带有对勾图标。'error'(错误): 通常显示为红色,带有叉号图标。'info'(信息): 通常显示为蓝色,带有 "i" 图标。'warning'(警告): 通常显示为黄色,带有感叹号图标。'loading'(加载中): 通常显示为灰色,带有加载动画图标。
$isajax (可选)
- 类型:
boolean - 含义: 是否为 AJAX 请求,这个参数非常重要,它决定了
showmessage的返回方式。 - 默认值:
false - 工作原理:
- 当
$isajax = false(默认): 函数会生成一个完整的 HTML 页面,包含提示信息和自动跳转的 JavaScript 代码,这个页面会直接输出到浏览器。 - 当
$isajax = true: 函数不会生成 HTML 页面,而是返回一个 JSON 格式的字符串,前端 JavaScript 可以解析这个 JSON,然后动态地在页面上显示提示信息,而无需刷新整个页面,这对于提升用户体验至关重要。
- 当
$isajax = true 时的返回数据结构
当 $isajax 设置为 true 时,showmessage 会返回一个 JSON 对象,其结构通常如下:
{
"status": 1, // 状态码,1表示成功,0表示失败
"message": "操作成功", // 提示信息
"url": "http://..." // 跳转URL
}
status: 标识操作是否成功。1代表成功(对应success类型),0代表失败(对应error类型)。message: 传入的$message值。url: 传入的$jumpurl值。
前端 JavaScript 可以这样使用:

(图片来源网络,侵删)
// 假设 $.post 是 jQuery 的 AJAX 方法
$.post('/some/url', {data: '...'}, function(response) {
if (response.status == 1) {
// 成功
alert(response.message);
// 如果需要跳转
if (response.url) {
window.location.href = response.url;
}
} else {
// 失败
alert(response.message);
}
}, 'json');
常见使用场景示例
场景1:表单提交成功,并跳转
// 在控制器中,user.php
public function add() {
if (isset($_POST['submit'])) {
// ... 执行添加用户的逻辑 ...
if ($result) {
// 显示成功信息,3秒后跳转到用户列表页
showmessage('用户添加成功!', '?m=member&c=index&a=index', '3', 'success');
} else {
// 显示失败信息,返回上一页
showmessage('用户添加失败!', '-1', '3', 'error');
}
}
// ... 显示添加表单 ...
}
场景2:AJAX 请求,返回 JSON 提示
// 在控制器中,comment.php
public function post() {
if (IS_POST) {
// ... 验证和处理评论数据 ...
if ($comment_id > 0) {
// 使用 AJAX 模式返回成功信息
showmessage('评论发表成功!', '', '0', 'success', true);
} else {
// 使用 AJAX 模式返回失败信息
showmessage('评论发表失败,请检查内容!', '', '0', 'error', true);
}
}
}
场景3:仅显示提示信息,不跳转
// 显示一个信息提示,页面停留0秒,不跳转
showmessage('系统将在5分钟后进行维护,请提前保存您的工作。', '', '0', 'info');
// 显示一个警告提示,并让用户手动点击返回
showmessage('您没有权限执行此操作!', '-1', '0', 'warning');
总结与最佳实践
-
明确用途: 根据你的需求选择是否使用 AJAX 模式。
- 表单提交后刷新页面: 使用默认模式 (
$isajax = false)。 - 在不刷新页面的情况下更新内容: 使用 AJAX 模式 (
$isajax = true),并配合前端 JavaScript 处理返回结果。
- 表单提交后刷新页面: 使用默认模式 (
-
参数顺序: 虽然参数有默认值,但为了代码清晰,建议在调用时显式写出参数名,尤其是在非默认值的情况下。
// 清晰的写法 showmessage('操作成功', '?m=content', 5, 'success', false); // 简洁但可读性稍差的写法 showmessage('操作成功', '?m=content', 5); -
跳转URL处理: 对于返回上一页的场景,使用
'-1'是 PHPCMS 的标准做法,比硬编码javascript:history.back()更规范。 -
信息类型选择: 合理使用
$type参数,可以给用户更直观的视觉反馈,帮助用户快速理解操作结果。
(图片来源网络,侵删) -
查看源码: 如果遇到不确定的地方,最好的方法是直接查看 PHPCMS 的源码。
showmessage函数通常位于phpcms/libs/functions/global.func.php文件中,阅读其实现可以让你更深刻地理解其工作原理。
