SmartyでPHPの配列をJavaScriptに渡す

  • このエントリーをはてなブックマークに追加
  • Pocket

たまにPHPからJavaScriptに配列を渡してあげたい場合がある。

テンプレートとしてSmartyを使っている場合の方法をいくつか試してみたメモ。

結果的にはSmartyの出番はほぼない。
PHP側でなんとかする。

Smarty

ご存知、テンプレート。
僕はあまり好きじゃない。
遅いし。

最近は各種フレームワークにHTMLテンプレートがついてきたりするから、ほとんどお目にかかることがない気がする。

配列をJavaScriptに渡す

結果からいうとSmartyの機能(?)ではなく、単純にPHP側で処理する。

内容としては配列をjson文字列に変換してSmartyに渡して、それをJavaScriptの変数に代入する。
素のままでもいけるかなー、と思い試してみたのがこちら。

スマーティテンプレートファイル

ですよね。
そうなるよね。

だまってPHPからjsに渡す場合でもjson_encodeして渡すしかないようだ。

PHP

スマーティ

ちなみに

スマーティの中でJavaScriptのコードを埋め込めるけど、if文等で「{}」があるとスマーティが「僕の構文だ!」と認識する。
そのため、以下のような記述だとエラーになる。

なお、「{}」を使わなければよいだけなので、こうするとエラーにならない。

ではちょっと複雑なScriptは書けないかというと、そうでもない。

{literal}

{literal}で挟んだ領域はスマーティは無視するので「{}」が使える。
もっと賢い方法もあるけど、それはググってくれ。

さっきのケースだとif文をリテラルではさめばOK.

・・・まあ あんまり使わない方がいいと思うけどね。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*