架构
架构设计
SwiftAdmin采用常规MVC设计模式,将我们的应用分为三层(模型M、视图V、控制器C)
并且在后台管理的前端页面中全局加载admin.js以及需要用到的第三方库,常规Submit Open Ajax操作依赖于全局属性
.env变量
swiftadmin不依赖于任何第三方的env变量获取的扩展包,出于兼容性的考虑;我们没有使用getenv函数来过去工程根目录下的.env文件的信息
而是采用自行编写的get_env函数来实现变量的获取,请一定要注意区分。请一定要注意区分。请一定要注意区分。请一定要注意区分。
也就是如果你要获取根目录下的.env里面的变量数据,请使用get_env函数,并且获取的变量名称一定要大写才可以;例如get_env('DATABASE_DATABASE')
目录结构
app
├── .htaccess
└── admin
├── common.php
└── config
├── app.php
└── controller
├── Index.php
├── Login.php
└── system // 系统控制
├── Tpl.php
├── Upload.php
├── event.php
└── lang
└── middleware
├── middleware.php
└── view
├── AdminController.php
└── api
├── AppService.php
├── BaseController.php
└── common // 公共模块
├── functions.php
├── HomeController.php
└── index // 前端模块
└── install // 安装模块
├── composer.json
├── composer.lock
├── composer.phar
└── config
└── error
└── extend
├── index.html
├── LICENSE.txt
├── nginx.htaccess
└── plugin
└── public
├── README.md
└── route
└── runtime
├── think
└── vendor
应用模块
在SwiftAdmin中默认有五个应用模块:admin、api、common、index、mobile你也可以扩展开发自己的应用模块。
后台模块(admin)是SwiftAdmin中的核心模块,后台模块又分为系统配置、附件管理、插件管理等多个功能模块,
更多的功能模块可以在插件管理中自由的安装和卸载。
后台模板adminJS
是基于Layui独立进行开发的,包含大量常用组件和属性,操作更便捷,在创建CURD的时候可以减少大部分JS的代码编写
前台模块(index)的结构和后台功能类似,具体请参考后台模块的章节。
前台模块(mobile)是手机端模块,我们期望默认大型应用的架构可以将PC和手机端的部分业务逻辑和模板区分开来方便维护
公共模块(common)是一个特殊的模块,默认是禁止直接访问的,一般用于放置一些公共的类或其它模块的继承基类等。
消息队列模块(queue)请注意这是一个特定的模块,无法访问,此模块为webman-gateway插件自动建立,用于做消息推送!
开发规范
-
请基于THINKPHP6 + WebMan的开发规范
-
所有控制器需要返回的消息数据,success error 返回。
-
所有其他需要用到语言转换的地方,请使用__(字符)返回;
-
前端渲染模板需要使用基类的view方法进行渲染,方便做视图过滤。
-
这样做的好处就是,当前的系统开发默认语言环境为中文,后期如果你需要多语言了,请自行制作语言包即可!
-
系统默认只是增加了一些简单的多语言配置文件,当你需要多语言配置的时候,请尽量使用语句较短的进行替换,过长会导致排版错位!
-
在开发的过程中,请保持写文档的习惯,因为SWIFTADMIN的认证机制,所以你需要记载每一个控制器的函数。
-
因为大多数情况下都是需要鉴权的,理论下你每个接口都需要填写到菜单里面,记录下来是为了让自己更方便查找!
如果你嫌麻烦可以直接在后台基础控制器里面进行配置!
-
尽量避免接口鉴权问题,因为后期菜单接口会出现很多,这个一般会出现在页面层,比如说,
-
你需要实时的调用一些接口用来返回JSON数据,为了没有必要添加多个接口鉴权,推荐采用iframe层的方式进行数据的添加和修改,
-
例如swiftAdmin框架的栏目添加。另外如果你已经习惯了在页面层进行数据的添加!
那么在调用数据的时候
-
如果数据量比较少并且是不变的,比如年级,分级制度,请在index方法展示得时候进行页面渲染输出即可
-
如果你的数据是经常需要变化的,由于是页面层,那么建议你在每个操作对应的方法中,增加参数判断来输出信息,
-
例如我需要POST ADD方法,那么请在add方法中增加一个函数判断!并且还需要自己去实现打开窗口回调函数的实现进行数据组件的渲染。
请参考导航管理! 额外模板变量,系统已经为你准备了一个公司信息模块,你完全可以使用标签调用这个函数,如果当前公司模块数据不符合你的要求 建议你做如下操作,
如果是系统的属性,那么请在基础配置里面增加 修改模板就行,如果是公司的属性,请在公司模块里面进行修改!!
特殊提示
当我们需要操作的页面数据比较混杂的时候,建议使用iframe层,虽然需要打开一个页面。但是做数据渲染比较方便,因为毕竟我们这个版本不是前后端分离,