## 视图
简单来说,一个视图其实就是一个 Web 页面,或者页面的一部分,像页头、页脚、侧边栏等,MixPHP的视图支持布局。
| 类 |
| --- |
| Mix\Http\View\ViewTrait |
## 创建一个视图
试图功能详解:
- MixPHP 的视图直接使用 PHP 做为引擎。
- 使用视图功能,只需 use ViewTrait 即可。
- 视图文件名全部使用小写,多个单词时,使用下划线分隔,例如:`setting_profile.php`。
- 通过 `$this->name` 可以传递数据到布局文件中使用。
下面演示为控制器 `ProfileController` 创建一个视图,控制器代码如下:
~~~
<?php
namespace Http\Controllers;
use Mix\Http\View\ViewTrait;
/**
* Class ProfileController
* @package Http\Controllers
* @author LIUJIAN <coder.keda@gmail.com>
*/
class ProfileController
{
/**
* 引用视图特性
*/
use ViewTrait;
/**
* 布局
* @var string
*/
public $layout = 'main';
/**
* 默认动作
* @return string
*/
public function actionIndex()
{
$data = [
'name' => '小明',
'age' => 18,
'friends' => ['小红', '小花', '小飞'],
];
return $this->render('index', $data);
}
}
~~~
先在 `applications/http/views/layouts` 目录建立一个布局文件 `main.php`,代码如下:
~~~
<html>
<head>
<title><?= $this->title ?></title>
</head>
<body>
<?= $content ?>
</body>
</html>
~~~
然后在 `applications/http/views` 目录创建一个 `profile` 目录,在目录中创建一个 `index.php` 文件,代码如下:
~~~
<?php
$this->title = 'Profile';
?>
<p>name: <?= $name ?>, age: <?= $age ?></p>
<p>friends:</p>
<ul>
<?php foreach($friends as $name): ?>
<li><?= $name ?></li>
<?php endforeach; ?>
</ul>
~~~
## 渲染视图
从上面的例子中可看出,视图的渲染是在控制器中,代码如下:
>[info] return $this->render(视图名, 数组);
### 视图名
不需要加上目录,框架会自动获取,只需输入视图文件名称,不需要带 `.php` 后缀。
```
// 当前控制器目录
return $this->render('index', $data);
// 其他目录
return $this->render('dirname.index', $data);
```
### 数组
需要传递给视图使用的数据,是一个数组类型,数组 `key` 会变为视图内的变量名称,数组 `value` 会变为变量的值。
## 视图布局
当使用 `$this->render` 渲染视图时,MixPHP会获取控制器属性 `layout` 的值,用来读取对应的布局文件。
>[info] 如果控制器未定义该属性,则该属性默认为 main。
~~~
public $layout = 'main';
~~~
### 不使用布局
当有需求不需要使用到布局时,使用下面的代码渲染视图:
>[info] return $this->renderPartial(视图文件名, 数组);
## 视图嵌套
当你在布局中使用公共的侧边栏等类似的需求时,需要在视图中加载另一个视图,如下:
~~~
<?= $this->render('子视图名', $__data__); ?>
~~~
>[info] `$__data__` 为当前视图传入所有变量的数组,可以让子视图使用父视图的全部变量。
- 欢迎使用 MixPHP
- 安装说明
- 全量安装
- Phar 命令行
- 入门须知
- 增改应用
- 命名空间
- 自动加载
- 入口文件
- 配置文件
- 服务开发
- 核心基础
- Bean
- Component
- Application
- 命令行
- 简介
- 命令行开发常识
- 命令行开发
- 创建命令
- 命令参数
- 打印与颜色
- 控制台程序
- 守护程序
- HTTP 服务
- 简介
- 服务器
- 路由
- 请求
- 响应
- 控制器
- 视图
- Auth
- Session
- 文件上传
- 其他组件
- 分页
- 验证码
- 图片处理
- 客户端
- GuzzleHttp
- 杂项
- Apache/PHP-FPM部署
- 调试与错误
- 安全建议
- WebSocket 服务
- 简介
- 服务器
- 注册器
- 连接
- 客户端
- 测试
- 杂项
- nginx代理
- 60s无消息断线
- TCP 服务
- 简介
- 服务器
- 客户端
- 测试
- UDP 服务
- 简介
- 服务器
- 客户端
- 测试
- 协程
- 简介
- 开启协程
- PHP Stream Hook
- xgo + Channel
- WaitGroup + xdefer
- 连接池
- 协程池
- 定时器
- 公共组件
- 中间件
- 验证器
- 验证器定义
- 验证规则
- 静态调用
- 模型
- 日志
- 缓存
- 数据库
- Database
- QueryBuilder
- PDOConnection
- Persistent\PDOConnection
- Coroutine\PDOConnection
- MasterSlave\PDOConnection
- ExecuteListener
- Redis
- RedisConnection
- Persistent\RedisConnection
- Coroutine\RedisConnection
- ExecuteListener
- 常见问题
- 同一台服务器部署多个服务
- 连接多个数据库
- 如何设置跨域
- form-data 上传文件失败
- 开发工具
- 版本更新
- 不兼容改动
- 升级指南
- 文档历史