• ベストアンサー

Smartyのテンプレートからjavascriptに配列を渡す

お世話になります。 PHP+Smartyで開発しております。 質問なのですが、 PHPからSmartyに連想配列をアサインします。 そして、そのテンプレートよりjavascriptへ配列を渡すことは 可能でしょうか? もし可能でしたら、ご教授願えないでしょうか。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

例えば、先にjavascriptで使用する配列を宣言しておきます。 <head> <script type="text/javascript"> <!-- var list = new Array(); //--> </script> </head> Smartyのテンプレート上で <script type="text/javascript"> <!-- list['aaa'] = 'bbb'; list['ccc'] = 'ddd'; //--> </script> という様に、宣言していた配列に対して値を入れる script文を出力させてやれば可能だと思います。

bakenshibakenshi
質問者

お礼

karumakaruma様、ご教授有難う御座います。 なるほど。こういうやり方でも出来ますね。 有難う御座いました。

関連するQ&A

  • Smartyのテンプレート内で、連想配列をassignする方法はあるのでしょうか?

    Smartyのテンプレート内で、連想配列をassignする方法はあるのでしょうか? もし、なんらかご存知の方いらっしゃいましたら教えて下さい。 #最悪{php}を使うとかでも構いませんので。。 ■現在 .php ---- $ary = array('id' => 1, 'name' => 'buta'); $sm = new Smarty(); $sm->assign('ary', $ary); ---- .tpl ---- ID={ $ary.id }<br> NAME={ $ary.name }<br> ---- ■希望 .tpl ---- { assign var='ary' value=array('id' => 1, 'name' => 'buta') } ⇒ エラー ID={ $ary.id }<br> NAME={ $ary.name }<br> ---- よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Smartyでtplファイルから配列をassignする方法

    Smartyを使っているんですが、テンプレートファイル(.tpl)側から配列の要素を入れることができません。 PHPからだと、 $test[test]="内容"; $smarty->assign("test",$test); でいけるんですが、tplからだと、 {assign var="test.test" value="内容"} としても入らないんです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Smartyなどのテンプレートって使っていますか?

    PHPを勉強しはじめたばかりですが、PHPで比較的大きな ウェブサイトを開発している場合、smartyなどのテンプレート って使用するんでしょうか?それともhtmlに埋め込んで行く 方法をとっているでしょうか?もちろん、どちらの方法も 会社によってやられているとは思いますが、どちらがスマートな 方法なんでしょうか?

    • ベストアンサー
    • PHP
  • smartyについて

    phpからassignしテンプレートに表示するには問題ないのですがテンプレートでassignし 表示させたく単純に以下のようにしてみましたがエラーになってしまいます。 <{assign var="aaa"value="名前"}> <{$aaa}> ※デリミタ設定は『<{』と『}>』で指定してます エラー内容は以下の通りです。 Fatal error: Smarty error: [in テンプレートファイル line assignしている行]: syntax error: invalid attribute name: '=' (Smarty_Compiler.class.php, line 1550) in ~中略~\Smarty\Smarty.class.php on line 1093 なんとなくではありますが'='が原因のような事はわかるのですが解決できずにおります。 この場合どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し

    smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し、それぞれのそのなかの変数をひとつのテンプレートに表示するという方法は可能でしょうか?つまりそれぞれを同じテンプレートに表示する、という方法はできるのでしょうか?PHPは下記のようになります。 $smarty = new Smarty(); $smarty2 = new Smarty(); $smarty->assign('abc', $def); $smarty2->assign('ghi', $jkl); $smarty->display('aaa.tpl'); $smarty2->display('aaa.tpl'); それとも、オブジェクトと表示するテンプレートは1つずつでないといけないとだめで、$smartyと$smarty2は、どっちかひとつに統一する必要があるのでしょうか?

    • ベストアンサー
    • PHP
  • smartyテンプレート読み込みについて

    Smarty動的Webサイト構築入門という書籍を見ながらSmartyを学習しているのですが、書籍のCD-ROMから落としたサンプルファイルを保存しているのですがどうしてもテンプレートを読み込むことができません。 03_01.php <?php require_once("../smarty/libs/Smarty.class.php"); $smarty = new Smarty(); $smarty->template_dir = "templates"; $smarty->compile_dir = "templates_c"; $smarty->assign("name", "Smartyさん"); $smarty->display("03_01.tpl"); ?> 03_01.tpl Hello, {$name}!! エラーメッセージ Warning: Smarty error: unable to read resource: "03_01.tpl" in C:\xampp\htdocs\smartybook\smarty\libs\Smarty.class.php on line 1092 03_01.phpは、C:\xampp/htdocs/smartybook/ren/に保存しています。 03_01.tplは、C:\xampp/htdocs/smartybook/templates/に保存しています。 どこが駄目なのか教えてください。 宜しくお願いします。

    • 締切済み
    • PHP
  • Smartyに関しまして

    require_once("Smarty/Smarty.class.php"); $smarty = new Smarty(); $smarty->template_dir = "./templates"; $smarty->compile_dir = "./templates_c"; $smarty->assign("message", "こんばんは"); $a = array('hello','php','html'); $smarty->assign('a',$a); $smarty->display("index.tpl"); これでindex.tplで出力すると日本語部分が「?????」になってしまいます。 何か設定がいるんでしょうか??

    • ベストアンサー
    • PHP
  • smarty foreach 半角スペース

    いつもお世話になっています。 phpより連想配列をsmartyにassignし、 smarty側でforeachで出力しているのですが、 要素間に無駄なスペースが混入します。 回避方法はあるのか教えて頂けないでしょうか。 [php] $arr = array('a' => 1, 'b' => 2); [smarty] {foreach from=$arr item=item} {item}: {/foreach} [出力] 1 : 2 ※本来1:2と出力させたい 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SmartyのSectionの良い例ってないでしょうか?

    Smartyのマニュアルでは、テンプレート側の例しかなく、PHP側でどうすれば良いのかがわかりません。 一番良く使うと思われるDBから連想配列を取得し、 それをテンプレートで表示する例がインターネット上のどこにも書かれていないので(T_T) <? //Smartyってスマートでないかも・・ $ar[0][testCd] = "1"; $ar[0][testName] = "田中"; $ar[1][testCd] = "2"; $ar[1][testName] = "鈴木"; ?> 上記配列をSmartyのSectionタグを用いて、 以下のように表示するには、PHP、テンプレートで 夫々どう書けば良いのでしょうか? ■No1 田中 ■No2 鈴木

    • ベストアンサー
    • PHP
  • Smartyのテンプレート

    PHPの初心者です。 ただいまSmartyを使って開発しております。 で、Smartyが動作していることは 確認できているのですが *.tplファイルを更新しても templates_cのコンパイル済みphpを 更新してくれないので困っております。 どこかでautoloadのような設定箇所があるのでしょうか? 初歩的な質問で申し訳ありませんが よろしくお願いいたします。 PHP :php-5.0.5 Smarty:Smarty-2.6.10 OS :Windows XP

    • ベストアンサー
    • PHP

専門家に質問してみよう