多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# ThinkPHP6 视图 * 视图功能由 `\think\View` 类配合视图驱动(也即模板引擎驱动)类一起完成 --- ## 一、模板渲染 ### 1、模板渲染 * 控制器和模版,它们名字是对应的。 * 通过 `fetch` 方法,访问控制器时,就可以渲染模版 * 想使用 `fetch` 方法,要先 `use` 引入 `View` ```php 示例: namespace app\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ // 不带任何参数 自动定位当前操作的模板文件 return View::fetch(); } } ``` * 这里如果我们没有视图文件,会报错:模版文件不存在。 * 第一步:创建一个跟控制器平级的目录,目录名:view * 第二步:在 view 目录里创建 Index 目录 * 第三步:在Index目录下,创建 index.html 文件 * 访问地址:www.xxx.com/index.php/index/index > 备:我们也可以创建多个方法或控制器,进行测试 --- ### 2、多控制器 模板渲染 * 控制器文件名:按照驼峰法命名的。 首字母大写,第二个单词首字母也大写。 * 控制器的文件名和文件里的类名,要一样。有利于文件自动加载。 * 新建AppApi.php文件 ```php 示例: namespace app\controller; use app\BaseController; use think\facade\View; class AppApi extends BaseController{ public function index(){ return View::fetch(); } } ``` * 模版目录 `view` 下创建 `AppApi` 目录 * `AppApi` 目录下创建 `index.html` 文件 * 访问地址:www.xxx.com/index.php/appapi/index > 备:模版目录名称 要跟控制器名称对应 --- ### 3、多项目 模版渲染 * 第一步:多项目需要开启 `config/app.php` 里的 `auto_multi_app` 配置,值设为:true * 第二步:在 `app` 目录下创建一个项目目录,目录名:`index` * 第三步:把控制器 `controller` 和视图 `view` 拷贝到刚创建的目录里 * 访问地址:www.xxx.com/index.php/index/appapi/index > 备:记得命名空间路径写正确 --- ### 4、注入 `View` * `ThinkPHP6` 使用 `View` 可能会冲突,我们就需要用注入的方式。 ```php 示例: namespace app\index\controller; use app\BaseController; use think\View; class AppApi extends BaseController{ public function index(View $view){ return $view->fetch(); } } ``` --- ### 5、调用模版 * 上面我们讲了控制器和模版对应,名称一样。 * 现在我们讲 控制器调用不一样名称的模版。 ```php 示例: namespace app\index\controller; use app\BaseController; use think\View; class Index extends BaseController{ public function index(){ // 调用对应名称模版 return View::fetch(); // 调用本控制器 task模版 return View::fetch('task'); // 调用本项目 AppApi控制器 index模版 return View::fetch('appapi/index'); // 调用本项目 AppApi控制器 index模版 return View::fetch('admin@member/index'); } } ``` > 备:需要一个控制器两个或多个模版,就可以进行判断。 --- ### 6、助手函数 `view` ```php 示例: namespace app\index\controller; use app\BaseController; class Index extends BaseController{ public function index(){ // 调用对应名称模版 return view(); // 调用本控制器 task模版 return view('task'); } } ``` --- ## 二、模版赋值 ### 1、模版赋值(控制器和视图交互) * 使用 `assign` 方法进行模板变量赋值 ```php 控制器示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ View::assign('id',1); View::assign('name','欧阳克'); View::assign([ 'id' => 2, 'name' => '黄蓉' ]); return View::fetch(); } } ``` ```html 视图示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>thinkphp6 课件</title> </head> <body> <div style="color:red;">{$id}--{$name}</div> </body> </html> ``` --- ### 2、助手函数 `view` * 使用系统提供的助手函数 `view` 可以完成相同的功能 ```php 控制器示例: namespace app\index\controller; use app\BaseController; class Index extends BaseController{ public function index(){ return view('index',[ 'id' => 3, 'name' => '郭靖' ]); } } ``` ```html 视图示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>thinkphp6 课件</title> </head> <body> <div style="color:red;">{$id}--{$name}</div> </body> </html> ```