twig likeにいくつかの変数があります
placeholder1
placeholder2
placeholderx
それらを呼び出すために、私はオブジェクトの配列「請求書」をループしています
{% for invoices as invoice %}
need to display here the placeholder followed by the invoice id number
{{ placeholedr1 }}
何か案が?ありがとうございました。
私はちょうど同じ問題を抱えていました-そしてこの最初の答えを使用して、いくつかの追加の調査の後、{{ attribute(_context, 'placeholder'~invoice.id) }}
が機能するはずであることがわかりました(_context
名前ですべてのオブジェクトを含むグローバルコンテキストオブジェクトである)
attribute
関数 を使用する代わりに、通常の角かっこ表記を使用して_context
配列の値にアクセスすることもできます。
{{ _context['placeholder' ~ id] }}
私はこれを個人的に使用します。これは、より簡潔で、私の意見ではより明確だからです。
環境オプションstrict_variables
がtrue
に設定されている場合は、default
フィルターも使用する必要があります。
{{ _context['placeholder' ~ id]|default }}
{{ attribute(_context, 'placeholder' ~ id)|default }}
そうしないと、変数が存在しない場合にTwig_Error_Runtime
例外が発生します。たとえば、変数foo
とbar
があり、変数baz
(存在しない)を出力しようとすると、メッセージKey "baz" for array with keys "foo, bar" does not exist
でその例外が発生します。
変数の存在を確認するためのより詳細な方法は、 defined
test を使用することです。
{% if _context['placeholder' ~ id] is defined %} ... {% endif %}
default
フィルタを使用して、デフォルト値を指定することもできます。 null
または文字列:
{{ _context['placeholder' ~ id]|default(null) }}
{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}
デフォルト値を省略した場合(つまり、|default(somevalue)
の代わりに|default
を使用した場合)、デフォルト値は空の文字列になります。
strict_variables
はデフォルトでfalse
ですが、たとえば次のような偶発的な問題を回避するために、true
に設定することをお勧めします。タイプミス。
Twig attribute
関数を使用できると思います。
この問題に対する私の解決策:
Placeholder(x)の配列を作成します。お気に入り:
# Options
$placeholders = array(
'placeholder1' => 'A',
'placeholder2' => 'B',
'placeholder3' => 'C',
);
# Send to View ID invoice
$id_placeholder = 2;
ビューとテンプレート呼び出しの両方の変数を送信します。
{{ placeholders["placeholder" ~ id_placeholder ] }}
このプリント「B」。
これがお役に立てば幸いです。
私は解決策を見つけました:
attribute(_context, 'placeholder'~invoice.id)