susina/twig-extensions

具有有用函数、过滤器及测试的Twig扩展

v0.6 2023-12-21 06:58 UTC

This package is auto-updated.

Last update: 2024-09-21 08:31:01 UTC


README

License Maintainability Test Coverage

Susina Twig Extensions 是一个为 Twig 模板引擎提供的扩展集合。它包含一些在原始库中缺失的有用函数、测试和过滤器。

安装

首先,使用Composer安装此包

composer require susina/twig-extensions

然后,将您想要添加到Twig引擎的扩展添加进去。假设您想加载 VariablesExtension

<?php declare(strict_types=1);

$loader = new Twig\Loader\FileLoader(__DIR__ . '/templates');
$twig = new \Twig\Environment($loader);

$twig->addExtension(new \Susina\TwigExtensions\VariablesExtension());

Symfony 框架

如果您使用的是Symfony,在用Composer安装库之后,将您想要的扩展注册为服务,并标记为 twig.extension

// In your `services.yml` file
services:
    Susina\TwigExtensions\GravatarExtension:
        tags: [twig.extension]

VariablesExtension

VariablesExtension 包含一些用于操作变量的有用测试和函数。

测试

注册此扩展后,您可以使用以下类型测试

  • array 用于测试变量是否为数组;Twig还有一个 Iterable 测试,但它对于可迭代的对象也会返回 true。
  • boolean 用于测试变量是否为布尔值。
  • floatdouble 用于测试变量是否为浮点数。
  • integer 用于测试变量是否为整数。
  • object 用于测试变量是否为对象。
  • scalar 用于测试变量是否为标量(见 https://php.ac.cn/manual/en/function.is-scalar.php)。
  • string 用于测试变量是否为字符串。
  • instanceOf(class_name) 用于测试一个对象是否是 class_name 类的实例

您可以在模板中使用它们

{% if variable is string %}
    The variable {{ variable }} is a string.
{% endif %}

{% if object is instanceOf('\SplStack') %}
    Object is a Stack
{% endif %}

函数

get_type

get_type 函数返回变量的类型

The variable `variable` is a {{ get_type(variable) }}.

var_export

var_export 函数是 PHP var_export 的包装,其行为相同。如果您想从变量生成一些有效的PHP代码,这可能会很有用。

过滤器

bool_to_string

bool_to_string 过滤器如果过滤的变量可以评估为 true,则返回字符串 'true',否则返回字符串 false

The "boolVariable" is {{ boolVariable|bool_to_string }}.

它返回 “boolVariable”是true

您可以通过传递两个变量到过滤器来自定义 true/false 字符串:第一个表示 true 值,第二个表示 false 值,例如:

The "boolVariable" is {{ boolVariable|bool_to_string('yes', 'no' }}.

它返回 “boolVariable”是yes

StringExtension

过滤器

quote

如果您想在一个字符串周围加上引号,可以使用 quote 过滤器

{% set variable = 'Donald Duck' %}

{{ variable|quote }} 

它返回引号字符串 'Donald Duck'

默认情况下,过滤器应用单引号 ',但您可以通过传递任何字符作为过滤器的参数来更改这一点

{% set variable = 'Donald Duck' %}

{{ variable|quote('"') }} 

然后它返回 "Donald Duck"

to_kb

to_kb 过滤器将数字从字节转换为千字节

{% set variable = 2048 }}

The file size is {{ variable|to_kb }} Kb

它返回: 文件大小是2 Kb

默认情况下,此过滤器使用英文小数点和千位分隔符:小数点用 . 表示,千位用 , 表示。您可以通过传递不同的分隔符来更改此行为

{% set variable = 5000000 }}

English: {{ variable|to_kb }} Kb

French: {{ variable|to_kb(',', '.') }}

它返回

English: 4,882.81

French: 4.882,81

to_mb

to_mb 过滤器将数字从字节转换为兆字节。其行为与 to_kb 相同。

Gravatar Extension

Gravatar 扩展包含一个过滤器,用于从指定的电子邮件地址检索 Gravatar 图片。 gravatar 过滤器返回头像的 uri,以便您可以在 HTML 中轻松使用。

<img src="{{ me@my-email.com | gravatar }}" alt="My avatar" />

您还可以向过滤器传递一些选项,例如:

<img src="{{ me@my-email.com | gravatar({ size: 200, default: mp }) }}" alt="My avatar" />

有关完整选项说明,请参阅 https://en.gravatar.com/site/implement/images/

问题

我们通过 Github 仓库问题 管理问题和功能请求。

贡献

请随意分支并提交拉取请求:所有贡献都受欢迎!

此库包括一些对开发者有用的 composer 脚本

  • composer test 运行测试套件
  • composer analytics 运行 Psalm 静态分析工具
  • composer cs:fix 修复编码标准
  • composer cs:check 检查编码标准(有关详细信息,请参阅 https://github.com/susina/coding-standard
  • composer coverage:html 生成 HTML 格式的代码覆盖率报告(到 /coverage 目录)
  • composer coverage:clover 生成 XML 格式的代码覆盖率报告
  • composer check 运行前三个命令

在提交拉取请求之前,请运行 composer check 并修复所有错误。

许可证

此库在 Apache 2.0 许可证下发布。