用composer搭建php框架(四)--MVC之视图

来源:互联网 发布:网络营销策划发展状况 编辑:程序博客网 时间:2024/05/16 10:02

本教程示例代码见 github:https://github.com/xdlmr/myframe

前言

上一篇中我们已经跑通了控制器,接下来我们将使用Twig模板引擎来渲染我们的htm文件,实现views层。

TWIG安装

我们依然使用composer安装,安装方法和klein相同,或者参考中文文档Twig安装方法。

基本用法
Twig使用一个加载器(Twig_Loader_String)来定位模板,和一个环境(Twig_Environment)来存储配置信息。 render() 方法通过传递过来的第一个参数来加载模板,通过传递过来的第二个参数(也就是变量)来渲染它。作为模板通常存储在文件系统中,Twig还配备了一个文件系统加载器:

require_once dirname(__FILE__) . '/vendor/autoload.php';$loader = new Twig_Loader_Filesystem('./views');$twig = new Twig_Environment($loader, array(    /* 'cache' => './compilation_cache', */));echo $twig->render('layout.html', array('name' => 'Fabien'));

使用Twig渲染视图

新建文件phpframe/views/index.htm:

<!DOCTYPE html><html><head>  <title>index</title></head><body><h1>这是视图</h1></body></html>

修改controller.php文件:

<?phpclass Controller {    private $assign=array();    function __construct(){            }    public function assign($name,$value){        $this->assign[$name] = $value;    }    function viewTpl ($file){        $filepath =PRODUCT_TEMPLATE_DIR.'/'.$file;        if(is_file($filepath)){            $loader = new Twig_Loader_Filesystem(PRODUCT_TEMPLATE_DIR);            $twig = new Twig_Environment($loader);            $template = $twig->load($file);            $template->display($this->assign?$this->assign:[]);        }else{            throw new Exception('没有找到视图文件:'.$file);        }            }    }

修改index.php的render方法:

public function render() {        $this->viewTpl('index.htm');    }

刷新页面:
这里写图片描述

我感觉视图可视渲染出来了!

验证http请求路由

index.htm中发送post请求:

 $.post({    url: '/index/doSomething',        data: {},        dataType:'json',        success:function(res){            console.log(res);        }    })

index.controller.php添加doSomething()方法:

public function doSomething($req){        return ['code' => CODE_SUCCESS, 'msg' => "成功"];}

刷新看到请求成功:
这里写图片描述