前端 - 界面布局
ThinkAdmin 的前端框架是基于最新版本的 LayUI 构建,对部分样式进行了调整。默认情况下,页面已经加载了所有 LayUI 官方组件,因此无需再次加载。 对于 LayUI 的版本,不建议用户自行升级。因为自行升级可能导致云存储无法上传文件。通常情况下,ThinkAdmin 官方版本会保持相对较新的 LayUI 版本,以确保与最新技术和标准保持一致。
此外,ThinkAdmin 的第三方插件是基于 requirejs 功能加载的。对于符合 AMD/CMD 标准的插件,请使用 require 函数进行引入。具体操作可参考“外部插件”部分的文档说明。 遵循这些指南将帮助您确保 ThinkAdmin 前端的稳定性和兼容性,并充分利用 LayUI 和其他插件的功能。
后台模板页面分为三种:
1、完整异步页面( 完整的页面 HTML 代理,含头部、内容、脚本部分 )
这种模板页面一般用于无菜单的页面,如:后台系统登录页面,内容带分页的选择器 iframe 页面。 具体使用时,需要继承 admin/view/full.html
模板,这种页面有加载顺序的,代码最好按模板块来摆放。 现成案例参见:系统登录
eg. 系统后台使用 data-iframe
方式打开或独立页面,若 full.html
主模板不存在,可以从 admin
应用视图复制过来。
{extend name="../../admin/view/full"}
{block name='style'}
<style>
/* 自定义页面样式 */
.header-body {
height: 50px;
}
</style>
{/block}
{block name='content'}
<!-- 页面内容部分 -->
<div class="iframe-pagination">
<textarea name="content"></textarea>
</div>
{/block}
{block name='script'}
<script>
// 脚本部分,默认加载了所有插件
$(function () {
// layui 表单组件初始化
layui.form.render();
// layui 组件动作初始化
layui.element.render();
// 异步加载富文本编辑器
require(['ckeditor'], function () {
// 初始化富文本编辑器
window.createEditor('[name=content]', {height: 350});
});
});
</script>
{/block}
2、内容异步页面( 页面只包含内容,不包含头部和脚本代码 )
这种模板页面一般用于有菜单的页面,支持页面标签名称设置及控制按钮,如:数据列表页面、独立表单页面等。 具体使用时,需要继承 admin/view/main.html
模板,这种页面没有加载顺序的,代码可以随便放置,都会有效果。 现成案例参见:商品编辑
eg. 系统后台使用 data-open
方式打开,若 main.html
主模板不存在,可以从 admin
应用插件视图复制过来。
{extend name="../../admin/view/main"}
{block name="button"}
<!-- html 按钮区 -->
<button data-open='{:url("add")}' data-title="添加文章内容" class='layui-btn layui-btn-sm layui-btn-primary'>添加文章</button>
<button data-action='{:url("remove")}' data-rule="id#{key}" class='layui-btn layui-btn-sm layui-btn-primary'>删除文章</button>
{/block}
{block name='content'}
<div class="think-box-shadow table-block">
<!-- html 内容 -->
</div>
{/block}
{block name='style'}
<!-- 样式区,也可能放 content 中,局部加载限制少 -->
<style>
table {
}
</style>
{/block}
{block name='script'}
<!-- 自定义脚本区,也可能放 content 中,局部加载限制少-->
<script>
// layui 表单组件初始化
layui.form.render();
// layui 组件动作初始化
layui.element.render();
// 异步加载富文本编辑器
require(['ckeditor'], function () {
// 初始化富文本编辑器
window.createEditor('[name=content]', {height: 350});
});
</script>
{/block}
3、弹层模板页面( 页面只包含内容,不包含头部和脚本代码 )
这种模板页面一般只用于弹层小页面显示,如:少量数据表单页面,少量数据内容页面。 现成案例参见:商品标签
eg. 系统后台使用 data-modal
方式打开的弹框子页面。
<form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
<div class="layui-card-body padding-left-40">
<label class="layui-form-item relative block">
<span class="color-green font-w7">标签名称</span>
<span class="color-desc margin-left-5">Mark Name</span>
<input class="layui-input" required placeholder="请输入标签名称" name="name" value="{$vo.name|default=''}"/>
<span class="help-block"><b>必填,</b>请填写分类名称(如:系统管理),建议字符不要太长,一般4-6个汉字</span>
</label>
<div class="layui-form-item relative block">
<span class="color-green font-w7">标签描述</span>
<span class="color-desc margin-left-5">Mark Remark</span>
<label class="relative block">
<textarea class="layui-textarea" placeholder="请输入文档描述" name="desc">{$vo.desc|default=''}</textarea>
</label>
</div>
</div>
<div class="hr-line-dashed"></div>
{notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
<div class="layui-form-item text-center">
<button class="layui-btn" type='submit'>保存数据</button>
<button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>
</div>
</form>
<script>
// 支持脚本代码
</script>
<style>
/* 支持样式代码 */
</style>
以上为模板的简单应用,更多用法需要自己去挖掘,建议参考官方案例代码。