Twig の使い方 - シンプルなチートシート的メモ 3 - 便利なフィルター
前回の続き。
便利なフィルター愉快なフィルター。
絶対値
{% set number = -30 %}
{# 30 #}
{{ number|abs }}
リスト分割
{# ROW: 123 ROW: 345 ROW: 7xx #}
{% for row in [ 1, 2, 3, 4, 5, 6, 7 ]|batch(3, 'x') %}
ROW: {% for d in row %}{{ d }}{% endfor %}
{% endfor %}
大文字小文字化、先頭1文字大文字化
{# Lcfirst #}
{{ 'lcfirst'|capitalize }}
{# lower #}
{{ 'LOWER'|lower }}
{# UPPER #}
{{ 'upper'|upper }}
日時フォーマットと日時の加減算
フォーマッタは DateInterval::format と同じ。
http://php.net/manual/ja/dateinterval.format.phpphp.net
{# 2018 - 01 - 02 12 : 34 : 56 #}
{{ '2018-01-02 12:34:56'|date("Y - m - d h : i : s") }}
{# 2017-12-26 12:34:56 #}
{{ '2018-01-02 12:34:56'|date_modify("-1 week")|date("Y-m-d h:i:s") }}
default
{# default string #}
{{ str|default('default string') }}
escape
{# %3Fhoge%3Dfuga #}
{{ '?hoge=fuga'|e('url') }}
{# %3Fhoge%3Dfuga #}
{{ '?hoge=fuga'|url_encode }}
{# hoge=HOGE&fuga=FUGA #}
{{ { hoge: 'HOGE', fuga: 'FUGA' }|url_encode }}
url_encode はクエリストリングも作れる便利な子。この考え方って素敵やん。
配列の一番最初を取得
{# 1 #}
{{ [ 1, 2, 3 ]|first }}
{# HOGE #}
{{ { hoge: 'HOGE', fuga: 'FUGA', foo: 'FOO' }|first }}
{# a #}
{{ 'abc'|first }}
配列の一番ケツを取得
first のケツ版。
{# 3 #}
{{ [ 1, 2, 3 ]|last }}
{# FOO #}
{{ { hoge: 'HOGE', fuga: 'FUGA', foo: 'FOO' }|last }}
{# c #}
{{ 'abc'|last }}
sprintf
{# hoge 1 1.000000 #}
{{ "%s %d %f"|format("hoge", 1.1, 1) }}
join
{# 1,2,3 #}
{{ [ 1, 2, 3 ]|join(',') }}
json_encode
{# {"hoge":"HOGE","fuga":"FUGA"} #}
{{ { hoge:'HOGE', fuga:'FUGA' }|json_encode()|raw }}
length
{# 3 #}
{{ [ 1, 2, 3 ]|length }}
merge
{# 1, 2, 3, 4 #}
{{ dump([ 1, 2 ]|merge([ 3, 4 ])) }}
{# { hoge: 'HOGE', fuga: 'FUGA', foo: 'FOO' #}
{{ dump({ hoge: 'HOGE', fuga: 'XXX' }|merge({ fuga: 'FUGA', foo: 'FOO' })) }}
改行を br に
{#
one<br>
two
#}
{{ "one\ntwo"|nl2br }}
数字をコンマで区切ったり、小数点切り詰めたり
PHP の number_format を呼んでるだけ。
{# 1,000,000 #}
{{ 1000000.234|number_format }}
{# 1,000,000.23 #}
{{ 1000000.234|number_format(2, '.') }}
置換
{# HOGE FUGA #}
{{ 'hoge fuga'|replace({ 'hoge': 'HOGE', 'fuga': 'FUGA' }) }}
リバース
{# 4321 #}
{{ '1234'|reverse }}
数値丸め
{# 10 #}
{{ 10.4 | round }}
{# 11 #}
{{ 10.5 | round }}
{# 11 #}
{{ 10.4 | round(0, 'ceil') }}
{# 10 #}
{{ 10.5 | round(0, 'floor') }}
{# 10.1 #}
{{ 10.05 | round(1) }}
slice
{# bcde #}
{{ 'abcdef'|slice(1, -1) }}
{# bcde #}
{{ 'abcdef'[1:-1] }}
sort
{# 1, 2, 3 ,4 #}
{{ [ 3, 4, 1, 2 ]|sort }}
striptags
PHP まんま。
{# hogeblah #}
{{ '<p>hoge</p><br><span>blah</span>'|striptags }}
{# hoge<br>blah #}
{{ '<p>hoge</p><br><span>blah</span>'|striptags('<br>') }}
ブロックライクにフィルター
{% filter upper %}
This text becomes uppercase
{% endfilter %}
{% filter lower|escape %}
<strong>SOME TEXT</strong>
{% endfilter %}