phpcms showmessage参数如何正确使用?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 参数 正文

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

phpcms showmessage参数
(图片来源网络,侵删)

函数基本语法

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 (可选)

  • 类型: integerstring
  • 含义: 页面停留跳转的时间(单位:秒),用户会看到提示信息,并等待指定的时间后页面才跳转。
  • 默认值: '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 可以这样使用:

phpcms showmessage参数
(图片来源网络,侵删)
// 假设 $.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');

总结与最佳实践

  1. 明确用途: 根据你的需求选择是否使用 AJAX 模式。

    • 表单提交后刷新页面: 使用默认模式 ($isajax = false)。
    • 在不刷新页面的情况下更新内容: 使用 AJAX 模式 ($isajax = true),并配合前端 JavaScript 处理返回结果。
  2. 参数顺序: 虽然参数有默认值,但为了代码清晰,建议在调用时显式写出参数名,尤其是在非默认值的情况下。

    // 清晰的写法
    showmessage('操作成功', '?m=content', 5, 'success', false);
    // 简洁但可读性稍差的写法
    showmessage('操作成功', '?m=content', 5);
  3. 跳转URL处理: 对于返回上一页的场景,使用 '-1' 是 PHPCMS 的标准做法,比硬编码 javascript:history.back() 更规范。

  4. 信息类型选择: 合理使用 $type 参数,可以给用户更直观的视觉反馈,帮助用户快速理解操作结果。

    phpcms showmessage参数
    (图片来源网络,侵删)
  5. 查看源码: 如果遇到不确定的地方,最好的方法是直接查看 PHPCMS 的源码。showmessage 函数通常位于 phpcms/libs/functions/global.func.php 文件中,阅读其实现可以让你更深刻地理解其工作原理。

-- 展开阅读全文 --
头像
Dell OptiPlex 7010拆机步骤是怎样的?
« 上一篇 11-29
Misfit Shine智能手环,究竟有何独特魅力?
下一篇 » 11-29

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]