• 行为管理使用
    • 使用方法:
    • 如何自定义行为?
      • 1.添加行为到行为系统
      • 2.行为埋点触发

    行为管理使用

    在使用该功能时,请你认真阅读一遍ThinkPHP - 行为扩展这章节, 需要有了这些预备知识。

    CMS中的行为系统改写了ThinkPHP的系统行为实现app/Libs/System/Hook.class.php,与TP的行为管理方式
    使用略有差异。

    CMS中有部分模块使用到了行为管理进行开发。以Wap模块为例:

    使用方法:

    1. 创建 Behavior

    一般来说,写在对应模块的下 Behavior/ 下,命名格式遵循 XXXBehavior

    图片

    主要实现一个 run(&$data) 方法

    1. <?php
    2. namespace Wap\Behavior;
    3. class WapBehavior {
    4. public function run(&$data) {
    5. if (MODULE_NAME == 'Content' && CONTROLLER_NAME == 'Index' && $this->isMobile()) {
    6. $catid = I('catid', 0, 'intval');
    7. $id = I('id', 0, 'intval');
    8. $parameter = $_GET;
    9. if ($catid && $id) {
    10. $action = 'shows';
    11. } else if ($catid && $id == 0) {
    12. $action = 'lists';
    13. } else {
    14. $action = 'index';
    15. }
    16. unset($parameter[C('VAR_MODULE')], $parameter[C('VAR_CONTROLLER')], $parameter[C('VAR_ACTION')]);
    17. redirect(U("Wap/Index/{$action}", $parameter));
    18. }
    19. }
    20. //判断是否属手机
    21. protected function isMobile() {
    22. ....
    23. return true;
    24. }
    25. }
    1. 注册 Behavior 到行为管理

    设置->行为管理->选择对应的行为进行编辑,规则参考行为规则使用说明

    图片

    图片

    测试:用手机打开首页时,自动回跳转到Wap首页。(当然,最好打Log了)

    如何自定义行为?

    上述Wap模块只是使用到了系统默认的行为 app_begin ,那么如何创建自己的行为呢?

    1.添加行为到行为系统

    设置->行为管理->添加行为

    图片

    2.行为埋点触发

    图片

    更多可以参考行为管理最佳实践