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

相关文章
|
人工智能 自然语言处理 Linux
AI谱曲 | 基于RWKV的最佳开源AI作曲模型魔搭推理实践
AI谱曲 | 基于RWKV的最佳开源AI作曲模型魔搭推理实践
|
JSON 监控 算法
TIDE.JS:三维空间数字化渲染引擎
为了满足我们三维空间渲染各个业务的需求,并且提供易用SDK方便第三方开发人员快速搭建自己的应用或平台,我们自研了TIDE.JS——一款组件化、轻量化、高性能、大规模的面向空间数字化应用的渲染引擎。
4034 0
TIDE.JS:三维空间数字化渲染引擎
|
SQL 存储 关系型数据库
Mysql 的InnoDB引擎下支持hash索引吗?
Mysql 的InnoDB引擎下支持hash索引吗?
1089 0
Mysql 的InnoDB引擎下支持hash索引吗?
|
敏捷开发 项目管理
深入理解Scrum:敏捷开发的核心原则和方法
Scrum强调迭代、协作、自组织和透明度,使团队能够更好地应对不断变化的需求和复杂性。Scrum方法的核心思想是通过一系列短期周期来交付功能,每个周期通常称为Sprint,以便及早获取用户反馈、适应变化并提供高质量的产品。
|
SQL 应用服务中间件 Apache
OpenResty+OpenWAF的WEB防护实战
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。本文介绍通过OpenResty+OpenWAF来搭建软WAF的应用,用来防护DVWA的靶机,然后我们通过攻击DVWA的靶机来看一下OpenWAF的防护效果。
597 0
|
数据可视化 JavaScript 前端开发
「Python系列」Python pyecharts模块
要安装 Python 的 `pyecharts` 模块,你可以使用 pip,这是 Python 的包管理工具
503 0
|
canal 监控 关系型数据库
【技术选型】Mysql和ES数据同步方案汇总
【技术选型】Mysql和ES数据同步方案汇总
719 0
【技术选型】Mysql和ES数据同步方案汇总
|
存储 负载均衡 Java
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
|
SQL JSON 前端开发
太实用了!JSON在Mysql中原来可以这么玩
太实用了!JSON在Mysql中原来可以这么玩
478 0
|
Java 数据安全/隐私保护 持续交付
手把手教你用 Jenkins 自动部署 SpringBoot
手把手教你用 Jenkins 自动部署 SpringBoot
手把手教你用 Jenkins 自动部署 SpringBoot