FastAdmin框架学习-后台加载流程理解

后台管理前端渲染机制

FastAdmin的后台管理中,前端的渲染机制为:主体区域由Index控制器下的index方法渲染,内容区域再由iframe的形式让单独的功能视图去渲染。所以当切换功能模块的时候,前端视觉上只会有内容区域的块被刷新了,可以保障一定的用户体验。同时,当内容区域的数据再发生改变的时候,前端不会重新加载整个内容区域,而是通过ajax的方式重新加载数据,渲染视图。这是FastAdmin后台管理前端展示的大致渲染过程。

后台管理主要文件和相关方法

application/admin/controller/目录下的Index.php是整个后台模块的主控制器,Index控制器主要包含三个方法,分别是indexloginlogout

  1. login方法渲染了登录页,其视图文件位置为view/index/login.html
  2. index方法渲染了后台的主体框架,其视图文件位置为view/index/index.html
  3. 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文件等。

发布了11 篇原创文章 · 获赞 1 · 访问量 182

猜你喜欢

转载自blog.csdn.net/xuancuocui1413/article/details/104003321