通过重写可用很简单的实现自己的模板布局,样式等等. 多样化的场景中,我们通过快速简单的配置实现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属性
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' ]); } }
面包屑指定模板
#project\app\admin\controller\Category.php namespace app\admin\controller; use easyadmin\app\libs\PageList; use easyadmin\app\libs\PageForm; use easyadmin\app\libs\PageShow; class Category extends \easyadmin\controller\Admin { /** * 定义列表 , 指定列表页面的面包屑模板 * @param PageList $page */ protected function configList(PageList $page) { $page->getBreadcrumb()->setTemplate('test:test1'); } /** * 配置表单 , 指定表单页面的面包屑模板 * @param PageForm $page */ protected function configFormField(PageForm $page) { $page->getBreadcrumb()->setTemplate('test:test1'); } /** * 查看详情配置 , 指定详情页面的面包屑模板 * @param PageShow $page */ protected function configShow(PageShow $page) { $page->getBreadcrumb()->setTemplate('test:test1'); } }
所有模板都是可以通过继承重写的; 只需要路径一一对应即可;
例如要重写过滤器 ( filter.html ) 模板; 只需要新建 project\app\admin\views\list\filters.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\ 目录下,按照这个结果一一对应 即可实现模板重写,达到自定义模板的效果
project\app\admin\views\
用法同 thinkphp-template 模板引擎
默认情况下,会在当前模块下面的views目录中查找
views
如果修改了 template 模板引擎配置, 则根据自己的配置规则进行查找
模板继承,需要 当前模块的views目录和thinkeasyadmin\src\app\views\目录一一对应
thinkeasyadmin\src\app\views\
系统优先查找模块下的views目录,再查找thinkeasyadmin\src\app\views\目录
@符号说明: @符号会替换成thinkeasyadmin\src\app\views\
@
@list:filters最终结果是 thinkeasyadmin\src\app\views\list:filters.html
@list:filters