1CMS文档

应用方法注解

通过方法注解,可更加方便将当前方法添加到路由/钩子/后台权限中,不再需要添加到route/hook/auth方法中

系统会在应用安装时扫描主文件与模块文件中的所有方法,将有注解的方法存储至对应的数据表中

注解功能需php>=5.6 制作应用插件时需在应用配置文件内限定php:>=5.6

/**
* @name 方法名称
* @desc 方法描述
* @hook test:test
* @route /test/
* @auth 测试方法
*/
function test(){
    echo(6666);
    return true;
}

hook 钩子注解

单行注解:

* @hook cms:notFound

指定被hook的function与执行条件:

* @hook function=cms:article:add;requires=post.title\=666666\;config.enabled!\=1

示例

/**
* @name 404
* @desc 一个方法实现自定义404功能
* @hook cms:notFound
*/
function test404(){
    @header("HTTP/1.1 404 Not Found");
    echo('page not found');
    return true;
}
/**
* @name 自定义文章页内容
* @desc 通过监听钩子返回新的数据
* @hook cms:nowArticle:=
*/
function diyArticle($class,$args,$return){
    if(isset($return['content'])) {
        $return['content']=$return['content'].'<br>新的内容';
        Return $return;
    }
}
/**
* @name 禁止删除栏目id=66618103下的文章
* @desc 通过requires判断是否允许执行钩子
* @hook function=cms:article:del;requires=args.1.cid\=66618103
*/
function delArticle($config){
    return false;
}

requires内的=与;需使用\进行转义

route 路由注解

单行注解:

* @route /test/

指定路由的hash:

* @route hash=test;uri=/test2/

示例

/**
* @name 666666
* @route /666666/
*/
function testPage(){
    echo('666666');
    return true;
}
/**
* @name 网址匹配
* @route /userinfo/(name)/
*/
function userinfo(){
    echo('name:'.$_GET['name']);
    return true;
}
/**
* @name 路由标识
* @route hash=page2;uri=/page_2/
*/
function testPage2(){
    echo('page2.');
    return true;
}
//可以通过route('page2')获取到此路由具体的访问网址,如未开启伪静态,访问网址为/index.php/page_2/

当路由未指定标识时,标识=方法,模块内的路由标识为 模块_方法,多行路由注解会在标识末尾增加序号

auth 后台权限

* @auth 测试

当 auth=-1 时,允许后台未登入用户访问此方法,如用户注册,登入等

当 auth=0 时,允许所有后台登入用户访问此方法,如文章列表页, 由方法内部自行判断是否允许访问

当 auth=权限名 时,后台登入用户须有对应权限才可访问此方法(当auth=1时,auth=name注解)

当 auth=分组名:权限名 时,后台勾选角色权限时将分组显示

示例

/**
* @name 后台测试
* @auth 测试
*/
function adminTest(){
    echo('adminTest');
    return true;
}

后台方法访问: /admin/?do=应用标识:方法名 或 /admin/?do=应用标识:模块名:方法名

auth注解实时生效,不需要重启应用