栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > tpAdmin

其他控制器 - tpAdmin 文档

tpAdmin 更新时间:发布时间: 百科书网 趣学号

##其他控制器
appadmincontroller*
完美支持多级控制器,也完美支持多级控制器权限分配与校验,完美支持多级控制器的代码生成

##继承
如果需要在控制器中是用权限校验,一定要继承公共控制器 `(appadminController)`,如果不需要权限校验,不用继承公共控制器,比如 `Generate` (代码自动生成控制器)、`Pub` (公开不授权控制器),如果需要继承公共控制器使用其方法但不想权限校验,请到extra目录下修改 `rbac.php` 里的配置信息
>[info] 继承公共控制器后仍然没有 add、edit、index等方法,需要引入 traits ,详情请看 [traits 多继承 Controller](225023)

##属性
和公共控制器一样,用来定义是否开启假删除和屏蔽不需要的方法
```
// 黑名单方法,禁止访问某些方法
protected static $blacklist = [];
// 是否删除标志,0-正常|1-删除|false-不包含该字段
protected static $isdelete = 0;
```
>[danger] 如果在控制器里不需要用到假删除,并且数据表中没有isdelete字段,一定要在控制器中将isdelete设为false,否则会导致报错
> 如果不需要使用相关方法,可以使用 protected static $blacklist = ['delete', 'deleteForever']; 对某些方法屏蔽

##方法
###前置方法 before 支持
本框架前置方法 before 支持写在公共控制器中,没有修改官方源码,使用方法请参考 [前置方法before支持](225018)

###过滤器 filter
用于 `index`、`recyclebin` 方法里过滤数据,**参数一定要使用取地址符&**,可以在此定义模糊查询,比如:

protected function filter(&$map)
{
if ($this->request->param('title')) {
$map['title'] = ["like", "%" . $this->request->param('title') . "%"];
}
if ($this->request->param('name')) {
$map['name'] = ["like", "%" . $this->request->param('name') . "%"];
}
}

完美支持在过滤里定义关联查询,使用到关联查询时不需要重写index或其他相关方法,提高开发效率,使用关联查询时要定义
`$map['_relation'] = "关联的表名,不含表名前缀"`,请参考 [ThinkPHP5 - 关联预载入](http://www.kancloud.cn/manual/thinkphp5/139045) ,`$map['_relation']` 的值与 `with` 方法的值一样
`$map['_table'] = “当前表名,不含前缀"`
如果使用关联查询条件,要定义成 `$map['relation_table.field'] = '值'`,例如:

protected function filter(&$map)
{
if ($this->request->param('login_location')) {
$map['login_location'] = ["like", "%" . $this->request->param('login_location') . "%"];
}

// 关联筛选
if ($this->request->param('title')) {
$map['title'] = ["like", "%" . $this->request->param('title') . "%"];
}
if ($this->request->param('name')) {
$map['name'] = ["like", "%" . $this->request->param('name') . "%"];
}

// 设置属性
$map['_table'] = "login_log";
$map['_relation'] = "user";
$map['_order_by'] = "login_log.id desc";
}

###ID 过滤器 filterId
ID 过滤器用于过滤某些禁止操作的数据,通常和前置方法配合使用,例如:
```

protected function beforeForbid()
{
// 禁止禁用 Admin 模块,权限设置节点
$this->filterId(1, '该用户不能被禁用', '=');
}
```
其中 `filterId()` 方法的第三个参数 $method 可以设置成比较符号,也可以设置成回调函数,例如:
```

protected function beforeForbid()
{
// 禁止禁用 Admin 模块,权限设置节点
$this->filterId([1, 2, 3, 4, 5, 6], '该记录不能被禁用');
}
```


转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/214008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号