zoukankan      html  css  js  c++  java
  • 构建自己的PHP框架(Twig模板引擎)

    完整项目地址:https://github.com/Evai/Aier

    Twig 模板引擎

    模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以。模板内的 变量 和 表达式 会在运行的时候被解析替换,标签(tags)会来控制模板的逻辑。
     

    安装Twig

    命令行运行:

    composer require "twig/twig:~1.0"

    在services目录下创建Twig.php:

    <?php
    
    /**
     * Class Twig
     */
    class Twig
    {
        public $view;
    
        public $data;
    
        public $twig;
    
        public $path = BASE_PATH . '/app/Views/';
    
        /**
         * Twig constructor.
         * @param $view
         * @param $data
         */
        public function __construct($view, $data)
        {
            $loader = new Twig_Loader_Filesystem($this->path);
    
            $this->twig = new Twig_Environment($loader, array(
                'cache' => BASE_PATH . '/cache/views/',
                'debug' => true
            ));
    
            $this->view = $view;
            $this->data = $data;
    
        }
    
        /**
         * @param $view
         * @param array $data
         * @return Twig
         */
        public static function render($view, $data = array())
        {
    
            return new Twig($view, $data);
    
        }
    
        public function __destruct()
        {
            $this->twig->display($this->view, $this->data);
        }
    }

    执行命令:

    composer dump-autoload

    在app/Views/ 下分别创建一个app.twig文件和index.twig 文件(.html文件也是可以的):

    {#app.twig#}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>app</title>
    </head>
    
    <body>
    
    <header>header</header>
    
    {% block content %}
    
    {% endblock %}
    
    <footer>footer</footer>
    
    </body>
    </html>
    {#index.twig#}
    {% extends 'app.twig' %}
    {% block content %}
    
    hello {{ data.name }}, your mobile is {{ data.mobile }}
    
    {% endblock %}

    在控制器中添加:

    $data = ['data' => ['name' => 'evai', 'mobile' => 12345678910]];
    
    return Twig::render('index.twig', $data);

    刷新浏览器,可以看到显示如下页面:

     详细文档请参考twig官网地址

  • 相关阅读:
    百度地图之自动提示--autoComplete
    h5之scrollIntoView控制页面元素滚动
    angular之interceptors拦截器
    angular之$broadcast、$emit、$on传值
    前端基础入门(一)-HTML-HTML基础
    改进自定义博客
    自定义博客主题
    使用JavaScript策略模式校验表单
    【经典面试题】圣杯布局以及双飞翼布局原理
    [JavaScript设计模式]惰性单例模式
  • 原文地址:https://www.cnblogs.com/evai/p/6244043.html
Copyright © 2011-2022 走看看