2019/4/17

変数がセットされてある時だけtrueになるようにif文を書く

先日書いたこちらのエントリ。

Redactor のフィールドを Matrix の Redactor に変更するためにインポートやらテンプレートの調整をした #craftcms | mersy note
https://note.mersy418.com/arti…

このなかにある「Matrix の取り出し方を汎用的にする」をそのまま使う形で、JSON出力するようにもしてみた。

ただ、その時にはjson_encodeしないといけなかったので、その辺を調整してみた。

json_encode - Documentation - Twig - The flexible, fast, and secure PHP template engine
https://twig.symfony.com/doc/2…

結局のところインクルードしているブロックの方のテンプレートをこんな感じで変数で分岐。

{# フィールドの値を変数にセット #} {% set block_richeditor = block.richeditor %}

{% if encodeJson is defined %} {{ block_richeditor|json_encode() }} {% else %} {{ block_richeditor }} {% endif %}

そのうえで必要な時だけencodeされればよいので

{% set encodeJson = true %}

こんな感じのを必要なテンプレートでセットする。

defined - Documentation - Twig - The flexible, fast, and secure PHP template engine
https://twig.symfony.com/doc/2…

「変数が設定されていれば」の分岐のところどう書くのかわからなかったのだけど、is defined なのね。勉強になりました。