質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

Q&A

解決済

1回答

3978閲覧

Twigの中でjavascriptの変数をkeyとして値を取得したい

s_k

総合スコア12

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

0グッド

0クリップ

投稿2017/11/18 15:46

Twigの中でjavascriptの変数をkeyとして値を取得したいと思っています。

$array = array( 1=>値1, 2=>値2, 3=>値3, );

例えば、上記の様な配列をphpからtwigに渡していた際に、
var result = "{{ array[1] }}" のようにすれば値が取れるのですが、このkeyをjsの変数で指定したいと思っています。

ただ、下記のようにすると、jsの変数が取れないため、resultが空になってしまいます。

var key = 1; var result = "{{ array[key] }}"

一旦jsの変数に配列のまま渡してから、jsをkeyとして指定する方法も考えたのですが、下記のようにエラーになってしまうためいい方法が思いつきません。

Twig_Error_Runtime [ Error ]: An exception has been thrown during the rendering of a template ("Array to string conversion").

どなたかご教授いただけると幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Twigのテンプレート(というよりはPHPそのもの)はjavascriptが動く前に動作が完了するので、javasriptの変数をTwigで使用するのは原理的に不可能です。

そのため、

javascript

1var key = 1; 2var result = "{{ array[key] }}"

は無理なので、arrayを先にjsonなりDOMなりを経由させてTwigでJavascriptが読めるデータを作ってあげてください。
参考

例えばこんな感じ

javascrip

1var data = {{ array|json_encode() }}; 2console.log(data);

でdataにtwigのarrayが代入されていることが確認できるかと思いますので、あとはdataをjavascriptで好きに扱えます。

投稿2017/11/18 17:11

tanat

総合スコア18711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s_k

2017/11/19 14:04

ご教授いただいた方法で実装できました。 詳しく教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問