本教程示例代码见 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文件:
<?php
class 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' => "成功"];
}
刷新看到请求成功: