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

本教程示例代码见 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' => "成功"];
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fontstyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值