后台管理前端渲染机制
在FastAdmin
的后台管理中,前端的渲染机制为:主体区域由Index
控制器下的index
方法渲染,内容区域再由iframe
的形式让单独的功能视图去渲染。所以当切换功能模块的时候,前端视觉上只会有内容区域的块被刷新了,可以保障一定的用户体验。同时,当内容区域的数据再发生改变的时候,前端不会重新加载整个内容区域,而是通过ajax
的方式重新加载数据,渲染视图。这是FastAdmin
后台管理前端展示的大致渲染过程。
后台管理主要文件和相关方法
在application/admin/controller/
目录下的Index.php
是整个后台模块的主控制器,Index
控制器主要包含三个方法,分别是index
、login
、logout
。
login
方法渲染了登录页,其视图文件位置为view/index/login.html
。index
方法渲染了后台的主体框架,其视图文件位置为view/index/index.html
。logout
方法没有渲染视图,而是执行了登出的逻辑,跳转回登录页。
后台管理功能模块相关文件与方法
当使用在线命令或者一键生成crud
命令等工具生成后台功能模块时,会生成以下文件。
FastAdmin项目目录
├── application
│ ├── admin
│ │ ├── controller
│ │ │ ├── Test.php
│ │ ├── model
│ │ │ ├── Test.php
│ │ ├── view
│ │ │ ├── test
│ │ │ │ ├── add.html
│ │ │ │ ├── edit.html
│ │ │ │ ├── index.html
│ │ │ │ ├── recyclebin.html
├── public
│ ├── assets
│ │ ├── js
│ │ │ ├── backend
│ │ │ │ ├── test.js
1.控制器Test.php
解析
Test.php
控制器下,默认只有一个重写了的_initialize
方法,其内容为:
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\Test;
$this->view->assign("weekList", $this->model->getWeekList());
$this->view->assign("flagList", $this->model->getFlagList());
$this->view->assign("genderdataList", $this->model->getGenderdataList());
$this->view->assign("hobbydataList", $this->model->getHobbydataList());
$this->view->assign("statusList", $this->model->getStatusList());
$this->view->assign("stateList", $this->model->getStateList());
}
其中,赋值给view的变量,将会在add.html
的视图文件中渲染,作为某些下拉选项。这是依据数据库中定义的字段生成的。
在该文件的注释中说道
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
说明如果自动生成的增删查改的基本逻辑是满足需要的,我们可以不用去手工编写这一部分的逻辑。
2.视图文件解析
从图中可以看到,增删查改这几个文件只包含一部分的html
代码,而其对应的布局文件,在Backend.php
的后台父类控制器中第180行中定义
/**
* 布局模板
* @var string
*/
protected $layout = 'default';
// 如果有使用模板布局
if ($this->layout) {
$this->view->engine->layout('layout/' . $this->layout);
}
所以增删查改这几个文件的布局文件是在view/layout
目录下。同时,该布局文件还负责加载对应的js文件等。