账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
视图基础

视图概述

视图作为 MVC 模式中的终端环节,在 web 编程中负责 dom 结构的展示。
phpGrace 使用 php 作为“天然模板“,您不必再去学习其他的模板语法,系统更不必浪费资源去完成复杂的模板解析工作!

视图创建

视图文件目录

|_ appView
    |_ 站点或分组目录
        |_ 控制器名称
            |_ 视图文件.php

控制器与视图间的数据共享

您定义的视图在控制内被自动或者使用 $this->__display() 调用,其实调用的核心非常简单且高效,核心就是“include”,这样就意味着您的视图文件和控制器都在一个对象内部!那么......

他们可以共享成员变量,即 $this->变量名称!
演示代码
# 控制器 .php , 如 index 控制器 -> index 方法

<?php
namespace grace\controller;
use grace\grace;

class index extends grace{

    public function index(){
        $this->name = 'phpGrace';
        $this->array = array('张三','李四','王五');
    }

}

# 视图.php ,如 appView/website/index/index.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>your site title</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" type="text/css" href="/static/main.css" />
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script>
</head>
<body>
<div style="padding:100px;">
    <h3><?php echo $this->name;?></h3>
    <ul>
        <?php foreach($this->array as $rows){?>
            <li><?php echo $rows;?></li>
        <?php }?>
    </ul>
</div>
</body>
</html>

自动调用规则

框架会自动按照一点规则调用视图,规则 : 

自动调用视图 : 当前控制器/当前方法.php

如果需要关闭自动视图调用,如 : 在 api 接口开发时是不需要视图文件的。

// 在站点或分组入口文件 index.php 内定 PG_AUTO_DISPLAY 为 false;
define('PG_AUTO_DISPLAY'  , false); 
// 引入框架并运行
use grace\phpGrace;
require '../vendor/autoload.php';
phpGrace::run(__DIR__);

手动调用视图

您还可以在控制器内使用 $this->__display() 函数调用任意视图文件,可以多次执行,调用多次;

<?php
namespace grace\controller;
use grace\grace;

class index extends grace{
    public function index(){
        $this->name = 'phpGrace';
        $this->array = array('张三','李四','王五');
        $this->__display('header.php');
    }

}

视图引用

web 开发中我们通常会使用通用的的头部和底部,可以在视图文件中引入它们,如 :

<?php include PG_VIEW_DIR.'libs'.PG_DS.'header.php';?>
// PG_VIEW_FIR 代表视图根目录 ( 绝对路径 )
// PG_DS 代表系统分割符

例子

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>your site title</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" type="text/css" href="/static/main.css" />
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script>
</head>
<body>
<?php include PG_VIEW_DIR.'libs'.PG_DS.'header.php';?>
<div style="padding:100px;">
    <h3><?php echo $this->name;?></h3>
    <ul>
        <?php foreach($this->array as $rows){?>
            <li><?php echo $rows;?></li>
        <?php }?>
    </ul>
</div>
</body>
</html>