控制器
为了方便项目的开发管理,我们将一些常用的、非业务逻辑代码抽离并整合到了一个公共的控制器基类(/app/common/controller/Admin.php),所有后台控制器都必须继承此基类控制器。
在此基类控制器中我们定义了一些必要的基础属性和通用方法,具体请往下看:
基础属性
/**
* 模型名(模型名、表名二选一)
* 应用模型名为string的格式:model+模型名
* 插件模型名为stirng的格式:pluginModel+模型名
* @var string|model
*/
protected $model = null;
/**
* 表名(模型名、表名二选一,表名不含表前缀)
* @var string
*/
protected $table = null;
/**
* 验证器类
* 应用验证器名为string的格式:validate+模型名
* 插件验证器名为stirng的格式:pluginValidate+模型名
* @var string|validate
*/
protected $validate = null;
/**
* 验证码添加场景名称(通用添加方法专用)
* @var string
*/
protected $addScene = '';
/**
* 验证器修改场景名称(通用修改方法专用)
* @var string
*/
protected $editScene = '';
/**
* 允许通过setField方法更新的字段
* @var array
*/
protected $setFields = [];
/**
* 限制通用修改方法可编辑的字段
* @var array
*/
protected $editFields = [];
/**
* 通用上传配置表(默认使用系统附件表)
* @var array
*/
protected $uploadConfigTable = [];
/**
* 表单数据(表单自动赋值)
* @var array
*/
protected $formData = [];
/**
* 无需鉴权的方法,但要登录
* @var array
*/
protected $noNeedAuth = [];
/**
* 无需登录的方法
* @var array
*/
protected $noNeedLogin = [];
/**
* 数据权限设置,可选值:own 个人,org 组织,false 不启用
* @var string|bool
*/
protected $dataRight = false;
/**
* 数据权限字段名
* @var string
*/
protected $dataRightField = 'admin_id';
/**
* 是否开启布局模板|布局模板文件路径
* @var bool|string
*/
protected $layout = false;
/**
* 模板渲染数据
* @var array
*/
protected $assignData = [];
/**
* 模板基础路径
* @var string
*/
protected $viewPath = '';
/**
* 权限Auth
* @var Auth
*/
protected $auth = null;
通用方法
由于后台采用了白名单权限控制,如有使用到某些 public 方法,请将此方法的url手动添加到权限菜单。
/**
* 新增数据
*
* @return mixed
*/
public function add()
{
}
/**
* 编辑数据
*
* @param integer $id 主键值
* @return mixed
*/
public function edit()
{
}
/**
* 删除数据(支持软删除自动识别)
*
* @param integer|array $id 主键值
* @return mixed
*/
public function delete()
{
}
/**
* 恢复软删除
*
* @param integer|array $id 主键值
* @return mixed
*/
public function restore()
{
}
/**
* 设置状态
*
* @param string $field 状态字段,默认status
* @param integer $value 状态值,0或1
* @param integer|array $id 主键值
* @return mixed
*/
public function setStatus()
{
}
/**
* 快速更新某个字段
*
* @param string $field 字段名,默认sort
* @param integer $value 字段值
* @param integer|array $id 主键值
* @return mixed
*/
public function setField()
{
}
/**
* 切换默认设置
*
* @param string $field 默认字段名,默认is_default
* @param integer $value 字段值
* @param integer $id 主键值
* @return mixed
*/
public function setDefault()
{
}
/**
* 上传附件
*
* @param string $action 上传方法,save保存入库;store只上传不入库
* @param string $from 来源(input默认,kindeditor,umeditor,markdown,ckeditor,ueditor)
* @param string $group 本地分组名
* @param string $thumb 缩略图尺寸(默认调用系统配置-上传配置-缩略图尺寸)
* @param string $thumb_type 缩略图裁剪类型(默认调用系统配置-上传配置-缩略图裁剪)
* @param integer $full_path 是否返回全路径(0否,1是)
* @param string $disk 磁盘(请根据/config/filesystem.php里面的disks来配置)
* @param string $driver 上传驱动(默认调用系统配置-上传配置-上传驱动)
* @param string $watermark 默认水印设置(默认调用系统配置-上传配置-默认水印)
* @param string $watermark_font 文字水印字体(默认调用系统配置-上传配置-文字水印字体)
* @param string $watermark_text 文字水印内容(默认调用系统配置-上传配置-文字水印内容)
* @param string $watermark_size 文字水印大小(默认调用系统配置-上传配置-文字水印大小)
* @param string $watermark_color 文字水印颜色(默认调用系统配置-上传配置-文字水印颜色)
* @param string $watermark_picture 水印图片地址(默认调用系统配置-上传配置-水印图片)
* @param string $image_watermark_locate 水印图片位置(默认调用系统配置-上传配置-图片水印位置)
* @param string $image_watermark_opacity 水印图片透明度(默认调用系统配置-上传配置-图片水印透明度)
* @return json
*/
public function upload()
{
}
/**
* 获取某个key的数据授权ID集合
*
* @param string $key 格式:应用.分组名
* @return array
*/
protected function getDataAuth(string $key)
{
}
/**
* 检查某个key的数据ID是否有授权
*
* @param int $id 数据ID
* @param string $key 格式:应用.分组
* @return bool
*/
protected function checkDataAuth(int $id, string $key) : bool
{
}
/**
* 获取同组织下的所有管理员ID
*
* @return array
*/
protected function getAdminIds()
{
}
/**
* 获取管理员的数据权限 where
*
* @param array $where 全部筛选条件(原样返回)
* @return array
*/
protected function getRightWhere($where = [])
{
}
/**
* 获取数据库对象
*
* @return object
*/
protected function getDb()
{
}
/**
* 获取模型对象
*
* @return object
*/
protected function model()
{
}
/**
* 获取数据库表对象
*
* @return object
*/
protected function table()
{
}
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @return array|string|true
* @throws ValidateException
*/
protected function validate(array $data, $validate, array $message = [], bool $batch = false)
{
}
/**
* 输出响应
*
* @param mixed $msg 提示信息
* @param mixed $data 要返回的数据
* @param integer $code 错误码/状态码
* @param string $type 输出类型,可选值:json、xml、jsonp
* @return json
*/
protected function response($msg, $data, int $code = 0, string $type = null, array $header = [])
{
}
/**
* 输出layui的json数据
*
* @param array $data
* @param integer $count
* @return json
*/
protected function layuiJson($data, $count = 0)
{
}
/**
* 以JSONP格式输出错误信息
*
* @param string $msg
* @param array $data
* @param string $url
* @return jsonp
*/
protected function errorJsonp($msg = 'error', $data = [], $url = '')
{
}
/**
* 以JSONP格式输出成功信息
*
* @param string $msg
* @param array $data
* @param string $url
* @return jsonp
*/
protected function successJsonp($msg = 'success', $data = [], $url = '')
{
}
/**
* 模板变量赋值
* @access public
* @param mixed $name 变量名
* @param mixed $value 变量值
* @return $this
*/
protected function assign($name, $value = '')
{
}
/**
* 解析和获取模板内容 用于输出
* @access public
* @param string $template 模板文件名或者内容
* @param array $vars 模板变量
* @return string
* @throws \Exception
*/
protected function fetch(string $template = '', array $vars = []): string
{
}
控制器示例:
<?php
namespace app\demo\admin;
use app\common\controller\Admin;
/**
* 文章控制器
* @package app\demo\admin
*/
class Artilce extends Admin
{
protected $model = 'modelArticle';// [选填]模型(模型、表名二选一)
protected $table = '';// [选填]表名(模型、表名二选一)
protected $validate = '';// [选填]验证器名
protected $addScene = '';// [选填]添加场景名称
protected $editScene = '';// [选填]修改场景名称
protected $setFields = [];// [选填]允许通过setField方法更新的字段
protected $editFields = '*';// [选填]在编辑模式下允许编辑的字段(*表示所有)
protected $uploadConfigTable = [];// [选填]通用上传配置表
protected $noNeedAuth = [];// [选填]无需鉴权的方法
protected $readonlyFields = [];// [选填]只读字段定义(表单构建器专用)
protected $dataRight = false;// [选填]数据权限设置,可选值:own 个人,org 组织,false 不启用
protected $dataRightField = 'admin_id';// [选填]数据权限字段名
public function index()
{
return $this->fetch();
}
}
公共模板变量
模板变量名称 | 生成的内容 | 备注数据 |
---|---|---|
STATIC | /static/[app] | 静态资源路径前缀 |
UPLOAD | /upload | 附件路径 |
PUBLIC_CSS | /static/css | 公共CSS文件目录 |
PUBLIC_JS | /static/js | 公共JS文件目录 |
PUBLIC_IMG | /static/image | 公共image文件目录 |
CSS | /static/[app]/admin/css | 当前应用的CSS文件目录 |
JS | /static/[app]/admin/js | 当前应用的js文件目录 |
IMG | /static/[app]/admin/image | 当前应用的image文件目录 |
[app] 为当前应用或插件名