ThinkPHP6.0使用twig作为模板引擎及自定义过滤器

简介: ThinkPHP6.0使用twig作为模板引擎及自定义过滤器

ThinkPHP自带的模板引擎用起来很不顺手,好在找到了一个和Jinja2很类似的一个一个模板引擎Twig,可以集成到ThinkPHP中。


文档:


https://github.com/yunwuxin/think-twig

https://twig.symfony.com/doc/3.x/

安装

composer require yunwuxin/think-twig

修改配置config/view.php


<?php
return [
    // 模板引擎类型使用Think
    // 'type'          => 'Think',
    'type'          => 'Twig',
    // 模板后缀(可以不修改,建议修改,IDE中有语法高亮提示)
    // 'view_suffix'   => 'html',
    'view_suffix'   => 'twig',  
  // 自定义过滤器
    'filters'       => config('twig_filters')
  // 其他配置项省略
];

自定义过滤器

config/twig_filters.php

<?php
// +----------------------------------------------------------------------
// | 自定义twig模板过滤器
// +----------------------------------------------------------------------
return [
    // 处理静态文件url
    "make_static_url" => function ($url) {
        // 静态文件路径,处理开发、生产环境
        $static_url = config('app.static_url');
        // 应用版本配置, 处理静态文件缓存问题
        $app_version = config('version.app_version');
        return "$static_url$url?t=$app_version";
    }
];

模板中使用自定义过滤器

<link href="{{ '/css/index.css' | make_static_url }}" rel="stylesheet

相关文章
|
JSON 监控 算法
TIDE.JS:三维空间数字化渲染引擎
为了满足我们三维空间渲染各个业务的需求,并且提供易用SDK方便第三方开发人员快速搭建自己的应用或平台,我们自研了TIDE.JS——一款组件化、轻量化、高性能、大规模的面向空间数字化应用的渲染引擎。
4144 0
TIDE.JS:三维空间数字化渲染引擎
|
JSON 网络协议 Java
图文详解压力测试工具JMeter的安装与使用
压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性能优化,也可以帮助我们预估系统的承载能力,使我们能根据其做出一些应对措施。
2034 0
图文详解压力测试工具JMeter的安装与使用
|
前端开发 PHP
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
本文介绍了在ThinkPHP框架中使用验证码扩展库的方法,包括安装验证码扩展库、在页面中使用验证码、自定义验证码配置以及校验验证码的步骤和代码示例。
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
|
前端开发 PHP
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
本文介绍了ThinkPHP6中实现模板布局的三种方式:全局配置方式、模板标签方式和动态方法布局,并通过示例代码展示了如何在项目中应用这些布局方式。
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
849 3
|
SQL 存储 关系型数据库
Mysql 的InnoDB引擎下支持hash索引吗?
Mysql 的InnoDB引擎下支持hash索引吗?
1155 0
Mysql 的InnoDB引擎下支持hash索引吗?
|
SQL 应用服务中间件 Apache
OpenResty+OpenWAF的WEB防护实战
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。本文介绍通过OpenResty+OpenWAF来搭建软WAF的应用,用来防护DVWA的靶机,然后我们通过攻击DVWA的靶机来看一下OpenWAF的防护效果。
731 0
|
前端开发 网络协议
Nest.js 实战 (十四):如何获取客户端真实 IP
这篇文章介绍了在Nest.js应用中获取客户端真实IP地址的问题及解决方法。问题出现在使用本地代理时,请求的IP地址总是返回::1或::ffff:127.0.0.1。为解决这个问题,需要确保代理服务器正确设置转发头如X-Forwarded-For或X-Real-IP,后端服务能够读取这些头信息来确定客户端的IP地址。文章以作者自己的OpenResty应用为例,展示了如何通过配置反向代理和设置X-Forwarded-For头来获取真实IP地址,并提供了相关的代码示例。最后,文章提到了使用这个解决方案后的实际效果,例如在操作日志中记录真实IP地址。
528 0
|
小程序
微信小程序实现一个todolist这样的小demo
微信小程序实现一个todolist这样的小demo
|
iOS开发
mac版本Beyond Compare如何一直试用
mac版本Beyond Compare如何一直试用
1173 0
mac版本Beyond Compare如何一直试用