jasny / twig-extensions
一组有用的 Twig 过滤器
v1.3.1
2024-09-03 09:04 UTC
Requires
- php: >=7.4.0
- twig/twig: ^2.7 | ^3.0
Requires (Dev)
- ext-intl: *
- ext-json: *
- ext-pcre: *
- phpstan/phpstan: ^1.12.0
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.10
Suggests
- ext-intl: Required for the use of the LocalDate Twig extension
- ext-pcre: Required for the use of the PCRE Twig extension
This package is auto-updated.
Last update: 2024-09-03 09:06:08 UTC
README
为 Twig 提供了许多有用的过滤器。
安装
可以使用 composer 容易地安装 Jasny 的 Twig 扩展。
composer require jasny/twig-extensions
使用
$twig = new Twig_Environment($loader, $options); $twig->addExtension(new Jasny\Twig\DateExtension()); $twig->addExtension(new Jasny\Twig\PcreExtension()); $twig->addExtension(new Jasny\Twig\TextExtension()); $twig->addExtension(new Jasny\Twig\ArrayExtension());
在 Symfony 项目中使用时,请 将扩展注册为服务。
services: twig.extension.date: class: Jasny\Twig\DateExtension tags: - { name: twig.extension } twig.extension.pcre: class: Jasny\Twig\PcreExtension tags: - { name: twig.extension } twig.extension.text: class: Jasny\Twig\TextExtension tags: - { name: twig.extension } twig.extension.array: class: Jasny\Twig\ArrayExtension tags: - { name: twig.extension }
日期扩展
根据当前区域设置格式化日期。需要 intl 扩展。
- localdate - 根据当前区域设置将日期值格式化为字符串
- localtime - 根据当前区域设置将时间值格式化为字符串
- localdatetime - 根据当前区域设置将日期/时间值格式化为字符串
- age - 基于日期获取年龄(年数)
- duration - 从秒获取持续时间字符串
Locale::setDefault(LC_ALL, "en_US"); // vs "nl_NL"
{{"now"|localdate('long')}} <!-- July 12, 2013 --> <!-- 12 juli 2013 -->
{{"now"|localtime('short')}} <!-- 5:53 PM --> <!-- 17:53 -->
{{"2013-10-01 23:15:00"|localdatetime}} <!-- 10/01/2013 11:15 PM --> <!-- 01-10-2013 23:15 -->
{{"22-08-1981"|age}} <!-- 35 -->
{{ 3600|duration }} <!-- 1h -->
PCRE
将 PCRE 暴露给 Twig。
- preg_quote - 引用正则表达式字符
- preg_match - 执行正则表达式匹配
- preg_get - 执行正则表达式匹配并返回匹配的组
- preg_get_all - 执行正则表达式匹配并返回所有匹配的组
- preg_grep - 执行正则表达式匹配并返回匹配模式的条目数组
- preg_replace - 执行正则表达式搜索并替换
- preg_filter - 执行正则表达式搜索并替换,只返回匹配的主体。
- preg_split - 使用正则表达式分割文本到数组
{% if client.email|preg_match('/^.+@.+\.\w+$/') %}Email: {{ client.email }}{% endif %}
Website: {{ client.website|preg_replace('~^https?://~')
First name: {{ client.fullname|preg_get('/^\S+/') }}
<ul>
{% for item in items|preg_split('/\s+/')|preg_filter('/-test$/', 'invert') %}
<li>{{ item }}</li>
{% endfor %}
</ul>
文本
将文本转换为 HTML + 字符串函数
- paragraph - 向文本添加 HTML 段落和换行符
- line - 获取单行文本
- less - 在页面断点处截断文本
- truncate - 如果文本太长则截断文本
- linkify - 将所有 URL 转换为可点击的链接(也支持 Twitter @user 和 #subject)
数组
将 PHP 的数组函数带到 Twig 中
- sum - 计算数组中值的总和
- product - 计算数组中值的乘积
- values - 返回数组的所有值
- as_array - 将对象转换为关联数组
- html_attr - 将数组转换为 HTML 属性字符串