Code Monkey home page Code Monkey logo

thinkphp-admin's Introduction

thinkphp-admin

thinkphp admin 顾名思义,就是基于thinkphp的一个后台管理框架啦。为什么叫后台管理框架呢?因为它没有前台,只有后台。而且它的设计,是从一个系统的角度出发去做的。它可以帮你解决后台的快速搭建问题,让你更专注去写业务逻辑,而非系统逻辑。

安装

1 数据库安装

在代码包里,有个目录叫database,它里面有两个sql文件,是用来初始化tpa数据库的,是tpa的基本数据库结构。当然,你可以根据自己的业务需要进行扩展。

2 配置修改

在系统目录下,有一个config.php文件,里面有核心的配置项,都写好了注释,看应该就可以看懂了。其中,有一些选项是必须

3 部署

把所有代码上传到服务器上,将public_html目录作为网站访问的根目录。注意,网站必须对系统目录有可访问权限,否则无法加载系统程序。当然,最好还有可写权限,因为缓存、运行时等都要写入文件。

使用

你需要在配置文件中绑定一个域名到Admin模块,访问这个模块就可以看到登陆界面。登陆初始化用户是administrator密码是123456.

1 菜单和权限

tpa后台菜单即是权限管理基础。当你登陆到后台之后,进入“设置-菜单管理”,可以添加修改菜单,我们只是实现了最基础的菜单功能,而没有做的更好,是希望你可以自己有更大的定制空间。当然,如果你嫌麻烦,完全可以不用再处理了。添加修改菜单之后,到“用户-管理员组”中进行菜单访问权限的授权,然后需要点击顶部导航右侧的“清空缓存”。

菜单即权限是我看过的几个基于thinkphp的框架的做法,所以我也采用了这种做法。但是为了解决一些冲突问题,增加了隐藏功能。比如有一个操作是用来上传文件的,但是这个上传地址没有必要在菜单中显示,所以选择隐藏就可以解决这个问题。

开发中,如果你要在后台增加一个管理菜单,首先第一步是到菜单中添加菜单,其次到管理员组中授权,再次才是编写菜单URL对应的控制、方法、视图。

2 继承

tpa采用了多级继承的方法。首先是Common模块中的Controller/BaseController,是整个系统的根控制器,以后你开发Home、Api模块,都要去继承这个控制器。怎么继承?很简单啊

namespace Home\Controller;
use Common\Controller\BaseController;

class HomeController extends BaseController {}

就是这么简单。为什么要继承呢?因为BaseController可以帮你解决一些垮模块的操作定义,比如uploadPicture,几乎所有的模块都会用到图片上传。还有就是,在BaseController中我们提供了SETCONFIG()操作,可以初始化由后台添加的配置项,并且在_initialize中就已经调用了,在所有继承的控制器中,不用写_initialize或者写_initialize时执行parent::_initialize();就可以初始化配置。

第二个需要继承的,就是每个模块下的__Controller,为什么要取这么怪异的控制器名字呢?因为以__开头的控制器无法通过url进行访问,所以我们在每个模块中先创建一个__Controller,并且在这个控制器中继承BaseController,并且在这个控制器中写入各种鉴权判断,或者protected方法给其他子类共享。具体你可以去研究一下我写的Admin模块中的其他控制器。

3 后台视图

后台采用了极简风格,这些界面采用了非常少的样式和脚本。首先是列表,列表统一采用

来列出,效果就是我们在后台看到的。然后是弹出层实现新增和编辑。

新增和编辑可以采用两种模式打开,一种就是普通的url跳转,还有一种是弹出层中打开。他们的区别在于链接到他们的url的标签,是否含有btn-dialog的class。在弹出层中打开一个页面,但是跟我们这里的新增和编辑没有关系的,可以在标签上增加class="open-in-dialog",这样,链接页面的所有内容都会被输出(要注意不要输出<!doctype>,这些标签)。

后台加载了一些重要的插件,第一个是dialog.js中的dialog相关方法。page.js中的ajaxPage,它主要用于弹出层,实现ajax加载页面。第二个是form.js中的ajaxSubmit,主要用于静态提交表单。接下来是HHuploadify,主要用于图片上传。colorpicker用于颜色拾取。datetimepicker用于时间选取。Tinymce是编辑器组件。powertip用于弹出界面上哪些黑色的提示,每到遇到错误的时候,tip就会冒出来。swiper是我最常使用的图片轮播插件。

4 写最少的视图

在每个控制器中,使用一个protected $form来实现新增、编辑页的表单。由于表单控件不同,我们只需要在$form中做不同的规定,就可以选择使用不同的view来渲染。这个功能很难解释,但你一定要学会使用,所以,你一定要去看下每个控制器中$form的实现方法。

发布原址:http://www.tangshuang.net/2306.html

thinkphp-admin's People

Contributors

tangshuang avatar

Watchers

James Cloos avatar Tiny avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.