>[info]HisiPHP的模块控制器分为前台控制器`application/test/home`和后台控制器`application/test/admin`。
>[danger] 以下所有示例讲解均在test模块下面进行。
## 创建后台控制器
在上一章节我们创建了一个文章列表菜单`test/article/index`,现在我们根据这个菜单地址来创建对应的控制器和方法。
文件路径:/application/test/admin/Article.php
控制器代码:
```
<?php
namespace app\test\admin;
use app\system\admin\Admin;
class Article extends Admin
{
protected $hisiModel = '';//模型名称[通用添加、修改专用]
protected $hisiTable = '';//表名称[通用添加、修改专用]
protected $hisiAddScene = '';//添加数据验证场景名
protected $hisiEditScene = '';//更新数据验证场景名
public function index()
{
if ($this->request->isAjax()) {
$data['data'] = [];
$data['count'] = 0;
$data['code'] = 0;
return json($data);
}
return $this->fetch();
}
}
```
>[danger]后台控制器必须继承`app\system\admin\Admin`
## 创建后台模板
HisiPHP后台UI框架使用的是Layui(http://www.layui.com),所以我们使用layui来创建示例模板。
模板文件路径:/application/test/view/article/index.html
```
<div class="page-toolbar">
<div class="page-filter fr">
<form class="layui-form layui-form-pane" action="{:url()}" method="get" id="hisi-table-search">
<div class="layui-form-item">
<label class="layui-form-label">搜索</label>
<div class="layui-input-inline">
<input type="text" name="keyword" lay-verify="required" placeholder="输入关键词,按回车搜索" class="layui-input">
</div>
</div>
</form>
</div>
<div class="layui-btn-group fl">
<a href="{:url('add')}" hisi-data="{width: '470px', height: '300px'}" class="layui-btn layui-btn-primary layui-icon layui-icon-add-circle-fine hisi-iframe" title="添加"> 添加</a>
<a data-href="{:url('status?val=1')}" class="layui-btn layui-btn-primary hisi-table-ajax layui-icon layui-icon-play" data-table="dataTable"> 启用</a>
<a data-href="{:url('status?val=0')}" class="layui-btn layui-btn-primary hisi-table-ajax layui-icon layui-icon-pause" data-table="dataTable"> 禁用</a>
<a data-href="{:url('del')}" class="layui-btn layui-btn-primary hisi-table-ajax confirm layui-icon layui-icon-close red"> 删除</a>
</div>
</div>
<table id="dataTable"></table>
{include file="system@block/layui" /}
<script type="text/html" id="statusTpl">
<input type="checkbox" name="status" value="{{ d.status }}" lay-skin="switch" lay-filter="switchStatus" lay-text="正常|关闭" {{ d.status == 1 ? 'checked' : '' }} {{ d.system == 1 ? 'disabled' : '' }} data-href="{:url('status')}?id={{ d.id }}">
</script>
<script type="text/html" title="操作按钮模板" id="buttonTpl">
<a href="{:url('edit')}?id={{ d.id }}" class="layui-btn layui-btn-xs layui-btn-normal hisi-iframe" title="修改" hisi-data="{width: '470px', height: '300px'}">修改</a><a href="{:url('del')}?id={{ d.id }}" class="layui-btn layui-btn-xs layui-btn-danger hisi-tr-del">删除</a>
</script>
<script type="text/javascript">
layui.use(['table'], function() {
var table = layui.table;
table.render({
elem: '#dataTable'
,url: '{:url()}' //数据接口
,page: true //开启分页
,skin: 'row'
,even: true
,limit: 20
,text: {
none : '暂无相关数据'
}
,cols: [[ //表头
{type:'checkbox'}
,{field: 'name', title: '标题'}
,{field: 'intro', title: '作者'}
,{field: 'status', title: '状态', width: 100, templet: '#statusTpl'}
,{title: '操作', width: 120, templet: '#buttonTpl'}
]]
});
});
</script>
```
渲染后的效果如下:
![](https://box.kancloud.cn/fcc25a9f69a63e033ee17f52910e6374_2854x680.png)
>[danger]后台模板必须在调用layui之前,加入如下代码:
>{include file="system@block/layui" /}
>!!!如果你的模板没有用到layui也要在代码末尾添加以上代码!!!
- 序言
- 环境配置
- 下载及安装
- 目录结构
- 系统配置
- 多语言
- 命令行(pro版)
- 自动生成模块或插件(build)
- 生成模块
- 生成插件
- 自动生成增删改查(crud)
- 第一步:创建数据表
- 第二步:使用crud指令生成
- 自动生成类库文件(make)
- 生成控制器文件(make:controller)
- 生成模型文件(make:model)
- 生成逻辑文件(make:logic)
- 生成服务文件(make:service)
- 生成验证器文件(make:validate)
- 构建器(pro版)
- 表单构建器(form)
- 表单属性设置
- 添加表单项
- 文本框(text)
- 隐藏域(hidden)
- 密码框(password)
- 文本域(textarea)
- 单文件(file)
- 多文件(files)
- 单图(image)
- 多图(images)
- 开关(switch)
- 单选(radio)
- 多选(checkbox)
- 下拉框(select)
- 标签(tag)
- 日期时间(datetime)
- 颜色选择器(color)
- 富文本编辑器(editor)
- 滑块(slider)
- 评分(rate)
- 穿梭框(transfer)
- 进度条(progress)
- 树形(tree)
- 联动(linkage)
- 自定义html(html)
- 分隔线(line)
- 文字(txt)
- 下拉框增强版(select+)
- 数据表格(table)
- 添加表单分组(group)
- 栅格布局(grid)
- 触发器(trigger)
- 通用上传方法
- 表格构建器(table)
- 表格基础配置
- 添加表头工具栏
- 添加表格筛选
- 页面提示(pageTips)
- 引入 JS 文件
- 引入 CSS 文件
- 渲染额外 JS 代码
- 渲染额外 CSS 代码
- 模块开发
- 1.生成模块
- 2.创建菜单
- 3.创建控制器
- 后台通用方法
- 插件开发
- 1.新建插件
- 2.插件配置
- 3.插件控制器
- 4.插件模板
- 5.插件钩子
- 模板替换变量
- 公共函数库
- 后台通用JS方法
- 常见问题
- 官方模块
- CMS内容管理模块
- 目录结构
- 模板标签
- API接口
- 栏目页/内容页
- 小程序发布
- 官方插件
- 第三方登录
- excel插件
- 万能采集
- 采集规则
- 采集内容