自定义模板

自定义模板的2种方式

  • 1. 指定模板 比较灵活,每个页面的不同元素都可以自定义实现
  • 2. 重写模板 一次实现,全局通用

通过重写可用很简单的实现自己的模板布局,样式等等.
多样化的场景中,我们通过快速简单的配置实现80%重复的劳作,一些多样化的业务,可能就会用到这块的内容.
列表页

列表页指定模板

#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\PageList;

class Category extends \easyadmin\controller\Admin
{
    /**
     * 定义列表
     * @param PageList $page
     */
    protected function configList(PageList $page)
    {
        # 指定模板
        $page->setTemplate('test:test1');
    }
}
                
添加修改页

添加修改页指定模板

#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\PageForm;

class Category extends \easyadmin\controller\Admin
{
    protected function configFormField(PageForm $page)
    {
        # 指定模板
        $page->setTemplate('test:test1');
    }
}
                
详情页

详情页指定模板

#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\PageShow;

class Category extends \easyadmin\controller\Admin
{
    protected function configShow(PageShow $page)
    {
        $page->setTemplate('test:test1');
    }
}
                
字段

字段指定模板,只需要在添加字段的时候 指定template属性

# 添加列表,表单,详情字段的时候
->addField('id', 'ID', ListText::class [
    //会查找 project\app\admin\views\test\btn.html 文件 进行渲染按钮
    'template'=>'test:test1'
]);

#添加过滤器字段的时候
->addFilter('name', '名称', FormText::class, [
    //会查找 project\app\admin\views\test\btn.html 文件 进行渲染按钮
    'template'=>'test:test1'
]);
                
按钮

按钮指定模板

# 实例化方式指定模板
$btn = new Btn();
$btn->setTemplate('test:test1');

#列表, 表单, 详情等页面 添加按钮方式指定模板
->addAction('按钮名称', 'url', [
    //会查找 project\app\admin\views\test\btn.html 文件 进行渲染按钮
    'template'=>'test:btn'
]);
                
分页

分页指定模板

#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\PageList;

class Category extends \easyadmin\controller\Admin
{
    /**
     * 定义列表
     * @param PageList $page
     */
    protected function configList(PageList $page)
    {
        # 指定分页的模板
        $page->getPage()->setTemplate('test:test1');
    }
}
                
过滤器

过滤器指定模板

#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\ListFilter;


class Category extends \easyadmin\controller\Admin
{

    protected function configListFilter(ListFilter $filter)
    {
        # 过滤器整个容器指定模板
        $filter->setTemplate('test:test1');

        # 过滤器字段指定模板
        $filter->addFilter('name', '名称', FormText::class, [
            //会查找 project\app\admin\views\test\btn.html 文件 进行渲染按钮
            'template'=>'test:test1'
        ]);
    }

}
                
重写模板

所有模板都是可以通过继承重写的; 只需要路径一一对应即可;

例如要重写过滤器 ( filter.html ) 模板; 只需要新建 project\app\admin\views\list\filters.html 文件,然后根据重写规则实现直接的模板即可;

重写说明
想要重写谁,就复制谁
#project\app\admin\views\list\filters.html

# 1.继承原有逻辑 进行扩展
{extend name="@list:filters" /}

{block name="main"}

    #原来逻辑之前实现自己的逻辑

    # {__block__} 标签会继承原有逻辑
    {__block__}


    #原来逻辑之后实现自己的逻辑

{/block}

{block name="style"}{/block}
{block name="js"}{/block}

#------------------------------------
# 2.完全自己实现过滤器
# 新建一个空白页面,直接实现逻辑就好了

可重写模板列表
在您的项目中,project\app\admin\views\ 目录下,按照这个结果一一对应 即可实现模板重写,达到自定义模板的效果
文件查找规则

1. 指定模板方式

用法同 thinkphp-template 模板引擎

默认情况下,会在当前模块下面的views目录中查找

如果修改了 template 模板引擎配置, 则根据自己的配置规则进行查找


2. 模板继承

模板继承,需要 当前模块的views目录和thinkeasyadmin\src\app\views\目录一一对应

系统优先查找模块下的views目录,再查找thinkeasyadmin\src\app\views\目录

@符号说明: @符号会替换成thinkeasyadmin\src\app\views\

@list:filters最终结果是 thinkeasyadmin\src\app\views\list:filters.html