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 %}