## 视图
视图是 MVC 模式中的一部分。 它是展示数据到终端用户的代码。
在网页应用中,根据视图模板来创建视图,视图模板为PHP脚本文件, 主要包含HTML代码和展示类PHP代码,简单起见,我们称视图模板或视图模板文件为视图。
## 渲染视图
模板文件的写法支持下面几种:
| 用法 | 描述 |
| --- | --- |
| 不带任何参数 | 自动定位当前操作的模板文件 |
| \[模块/\]\[控制器/\]\[操作\] | 常用写法,支持跨模块 |
下面是一个最典型的用法,不带任何参数:
~~~
// +----------------------------------------------------------------------
// | onegow [ WE CAN DO IT MORE SIMPLE]
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2018 http://onegow.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: mrye 55585190@qq.com
// +----------------------------------------------------------------------
namespace inc\mobile;
class Action extends Base
{
/**
* 模板使用方法类似于tp
* 模板操作
*/
public function tpl()
{
return $this->view();
}
}
~~~
如果没有按照模板定义规则来定义模板文件(或者需要调用其他控制器下面的某个模板),可以使用:
~~~
// 指定模板输出
return $this->view('edit');
~~~
表示调用当前控制器下面的edit模板
~~~
return $this->view('member/read');
~~~
表示调用Member控制器下面的read模板。
~~~
return $this->view('web/member/edit');
~~~
跨模块渲染模板,代表web模块中的member控制器底下的edit模板
## 视图赋值
除了系统变量和配置参数输出无需赋值外,其他变量如果需要在模板中输出必须首先进行模板赋值操作,否则在模板中无法使用变量,例如:
### `assign`方法
~~~
// +----------------------------------------------------------------------
// | onegow [ WE CAN DO IT MORE SIMPLE]
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2018 http://onegow.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: mrye 55585190@qq.com
// +----------------------------------------------------------------------
namespace inc\mobile;
class Action extends Base
{
/**
* 模板使用方法类似于tp
* 模板操作
*/
public function tpl()
{
$this->assign([
'name' => 'mrye',
'email' => '55585190@qq.com'
]);
return $this->view();
}
}
~~~
### 方法传入参数
方法`view`可传入模板变量,例如
~~~
// +----------------------------------------------------------------------
// | onegow [ WE CAN DO IT MORE SIMPLE]
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2018 http://onegow.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: mrye 55585190@qq.com
// +----------------------------------------------------------------------
namespace inc\mobile;
class Action extends Base
{
public function tpl()
{
return $this->view('index', [
'name' => 'mrye',
'email' => '55585190@qq.com'
]);
}
}
~~~