一直以为首页就是index为名的某个文件。但是今天遇到一个index_index.html 为首页的模板,找了很久一直没有找到这么命名的原因。后来请教了下前辈,原来这么命名是 控制器名称+方法名称,这是mvc里面的知识点。thinkphp5里面也有相关介绍。
thinkphp5 里面关于这个的介绍在模板定位中有详细说明。
ThinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:视图目录/控制器名(小写)/操作名(小写)+模板后缀。模板后缀一般为".html"。
模板渲染使用\think\View
类的fetch
方法,渲染规则为:模块@控制器/操作。这里用到了一个fetch()方法。
return $view->fetch();
则按照系统的默认规则定位模板文件到:[模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html。
如果(指定操作)调用:
return $view->fetch('add');
则定位模板文件为:[模板文件目录]/当前控制器名(小写+下划线)/add.html
如果调用控制器的某个模板文件使用:
return $view->fetch('user/add');
则定位模板文件为:[模板文件目录]/user/add.html
跨模块调用模板
return $view->fetch('admin@user/add');
全路径模板调用:
return $view->fetch(APP_PATH.request()->module().'/view/public/header.html');
我上面所说的index_index.html应该是属于第一种。至于为什么是‘_’而不是‘/’。是因为在配置template的时候,设置了'view_depr'=>'_'。
当前模块/默认视图目录/当前控制器(小写)/当前操作(小写).html
经过设置后就成为
当前模块/默认视图目录/当前控制器(小写)_当前操作(小写).html