后台方法重写

1. URL 路由规则

iCMS 后台的路由规则基于 URL 和参数 do 来确定调用的控制器和方法。URL 的格式通常为:

admincp.php/{模块}/{动作}
  • {模块}:对应后台的模块名称,如 articletest_node 等。
  • {动作}:对应模块中的具体操作,如 managesave 等。

2. 方法重写优先级

iCMS 后台方法的重写优先级遵循以下规则:

  1. 自定义方法文件:优先加载自定义的方法文件。
  2. 默认方法文件:如果自定义方法文件不存在,则加载默认的方法文件。

2.1 URL: admincp.php/article/index

对应方法:public function do_index(){}

优先级:

  1. article/ArticleDoIndexAdmincp.php
    如果存在该文件,则优先加载并执行其中的 do_index 方法。
  2. article/ArticleDoAdmincp.php
    如果 ArticleDoIndexAdmincp.php 不存在,则加载该文件并执行其中的 do_index 方法。
  3. article/ArticleAdmincp.php(默认)
    如果以上文件均不存在,则加载默认文件并执行其中的 do_index 方法。

2.2 URL: admincp.php/article

参数:do=save
对应方法:public function done_save(){}

优先级:

  1. article/ArticleDoneSaveAdmincp.php
    如果存在该文件,则优先加载并执行其中的 done_save 方法。
  2. article/ArticleDoneAdmincp.php
    如果 ArticleDoneSaveAdmincp.php 不存在,则加载该文件并执行其中的 done_save 方法。
  3. article/ArticleAdmincp.php(默认)
    如果以上文件均不存在,则加载默认文件并执行其中的 done_save 方法。

2.3 URL: admincp.php/test_nodeadmincp.php/testNode

对应文件:TestNodeAdmincp.php

  • iCMS 支持 URL 中的下划线(_)和驼峰命名(camelCase)自动转换。
  • 例如,admincp.php/test_nodeadmincp.php/testNode 都会映射到 TestNodeAdmincp.php 文件。

3. POST 请求处理

对于 POST 请求,iCMS 会根据 URL 和 do 参数调用对应的方法。

示例:保存文章

  • URL: admincp.php/article
  • 参数: do=save
  • 对应方法: public function done_save(){}

处理流程:

  1. 检查是否存在 article/ArticleDoneSaveAdmincp.php,如果存在则加载并执行 done_save 方法。
  2. 如果不存在,则检查 article/ArticleDoneAdmincp.php,加载并执行 done_save 方法。
  3. 如果以上文件均不存在,则加载默认的 article/ArticleAdmincp.php 并执行 done_save 方法。

4. 默认方法文件

默认方法文件是 iCMS 后台模块的入口文件,通常命名为 {模块}Admincp.php。例如:

  • article/ArticleAdmincp.php
  • testNode/TestNodeAdmincp.php

这些文件中定义了模块的默认方法,如 do_indexdone_save 等。

5. 自定义方法文件

自定义方法文件允许开发者扩展或重写默认方法。命名规则为:

  • {模块}/{模块}Do{动作}Admincp.php
    例如:article/ArticleDoManageAdmincp.php
  • {模块}/{模块}Done{动作}Admincp.php
    例如:article/ArticleDoneSaveAdmincp.php

6. 示例代码

6.1 默认方法文件:article/ArticleAdmincp.php

class ArticleAdmincp {
    public function do_index() {
        echo "默认的文章管理方法";
    }

    public function done_save() {
        echo "默认的文章保存方法";
    }
}

6.2 自定义方法文件:article/ArticleDoIndexAdmincp.php

class ArticleDoIndexAdmincp {
    public function do_index() {
        echo "自定义的文章管理方法";
    }
}

6.3 自定义方法文件:article/ArticleDoneSaveAdmincp.php

class ArticleDoneSaveAdmincp {
    public function done_save() {
        echo "自定义的文章保存方法";
    }
}

7. 总结

iCMS 后台方法重写规则提供了灵活的扩展机制,允许开发者通过自定义方法文件来覆盖默认行为。优先级规则确保自定义方法优先于默认方法执行,同时支持 URL 中的下划线和驼峰命名自动转换。开发者可以根据实际需求,灵活使用这些规则来实现功能扩展和定制。

全站缓存

自动调用包含makeCache, autoCache方法

//test/testAdmincp::do_autoCache
//test/testAdmincp::done_autoCache
//test/testAdmincp::autoCacheAaBb
//test/testAdmincp::makeCache