行为管理使用
在使用该功能时,请你认真阅读一遍ThinkPHP - 行为扩展这章节, 需要有了这些预备知识。
CMS中的行为系统改写了ThinkPHP的系统行为实现app/Libs/System/Hook.class.php
,与TP的行为管理方式
使用略有差异。
CMS中有部分模块使用到了行为管理进行开发。以Wap
模块为例:
使用方法:
- 创建 Behavior
一般来说,写在对应模块的下 Behavior/
下,命名格式遵循 XXXBehavior
主要实现一个 run(&$data)
方法
<?php
namespace Wap\Behavior;
class WapBehavior {
public function run(&$data) {
if (MODULE_NAME == 'Content' && CONTROLLER_NAME == 'Index' && $this->isMobile()) {
$catid = I('catid', 0, 'intval');
$id = I('id', 0, 'intval');
$parameter = $_GET;
if ($catid && $id) {
$action = 'shows';
} else if ($catid && $id == 0) {
$action = 'lists';
} else {
$action = 'index';
}
unset($parameter[C('VAR_MODULE')], $parameter[C('VAR_CONTROLLER')], $parameter[C('VAR_ACTION')]);
redirect(U("Wap/Index/{$action}", $parameter));
}
}
//判断是否属手机
protected function isMobile() {
....
return true;
}
}
- 注册
Behavior
到行为管理
设置->行为管理->选择对应的行为进行编辑,规则参考行为规则使用说明
测试:用手机打开首页时,自动回跳转到Wap首页。(当然,最好打Log了)
如何自定义行为?
上述Wap模块只是使用到了系统默认的行为 app_begin
,那么如何创建自己的行为呢?
1.添加行为到行为系统
设置->行为管理->添加行为
2.行为埋点触发
更多可以参考行为管理最佳实践