ホームページ  >  記事  >  バックエンド開発  >  Smarty テンプレートで、js で foreach またはセクション ループをネストするにはどうすればよいですか?

Smarty テンプレートで、js で foreach またはセクション ループをネストするにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:50:481153ブラウズ

これは固定ページです。

          <script>                                     var box =new PPTBox();                                     box.width = 1250; //宽度                                     box.height = 490;//高度                                     box.autoplayer = 3;//自动播放间隔时间                                     //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"})                                     box.add({"url":"images/tu1.jpg","title":"悬浮提示标题1"});                                     box.add({"url":"images/tu2.jpg","title":"悬浮提示标题2"});                                     box.add({"url":"images/tu3.jpg","title":"悬浮提示标题3"});                                     box.add({"url":"images/tu4.jpg","title":"悬浮提示标题4"});                                     box.show();                                </script>


これを実現するには、smarty ループを使用します
{literal}                                 <script>                                     var box =new PPTBox();                                     box.width = 1250; //宽度                                     box.height = 490;//高度                                     box.autoplayer = 3;//自动播放间隔时间                                     //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"})	{foreach item=lop from=$tuan }        box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}"});	{/foreach}        box.show();                                </script>


ディスカッション (解決策) に返信します

Web ページと同様に、区切り文字 "{<" を変更するのが最善です

php で json_encode を使用して json に変換し、smarty に渡すと、js が json 出力を解析する方が簡単になります。

{foreach item=lop from=$tuan }
box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}"} );
{/foreach}

このループは php を通じてカプセル化でき、値をテンプレートに渡すことができます。

{foreach item=lop from=$tuan }
box.add({"url":"./upload/admin/{$lop.image}","title":"{$lop.title}" });
{/foreach}

このループは php を通じてカプセル化でき、値をテンプレートに渡すことができます。


これは当然です。 php を通じてカプセル化して値をテンプレートに渡すか、js 関数を通じてカプセル化して値をテンプレートに渡して、この関数を実行するかどうかを決定します。

php で json_encode を使用して json に変換し、smarty に渡すことができます。js が json 出力を解析するのがはるかに簡単になります。


兄弟、私は json_encode や json を使ったことがなく、タスクは少し急いでいます。最後まで人々を助け、具体的なコードを書いてください、ありがとう!

例として、自分で変更するだけです。

var json='[{"id":12,"name":"aa"},{"id":13,"name":"bb"}]';  // json对象来自php的json_encode var obj=eval(json) for(var i=0; i<obj.length; i++)  {      document.write(obj[i].id+" " + obj[i].name);  }

3階の方法は実現可能だと思います

例、自分で修正するだけです。

var json='[{"id":12,"name":"aa"},{"id":13,"name":"bb"}]';  // json对象来自php的json_encode var obj=eval(json) for(var i=0; i<obj.length; i++)  {      document.write(obj[i].id+" " + obj[i].name);  }


<script>                                     var box =new PPTBox();									 var json='[{"url":"images/tu1.jpg","title":"悬浮提示标题1"},{"url":"images/tu2.jpg","title":"悬浮提示标题1"},{"url":"images/tu3.jpg","title":"悬浮提示标题1"},{"url":"images/tu4.jpg","title":"悬浮提示标题1"}]';									 var obj=eval(json)                                     box.width = 1250; //宽度                                     box.height = 490;//高度                                     box.autoplayer = 3;//自动播放间隔时间                                     //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"})									 for(var i=0; i<obj.length; i++){										document.write('box.add({"url":'+'"'+obj[i].url+'"'+","+'"title":'+'"'+obj[i].title+'"'+"});");									 }                                     box.show();                                </script>

必要な形式を正しく出力できることを期待して、あなたの例に従って変更しようとしましたが、データがWebページに直接出力されます。 jsが読み込めないのですがどうやって書けばいいのでしょうか?

document.write

を削除します

document.write

を削除します

for(var i=0; i }

このように書きますが、まだ効果はありません!

あなたは具体的に何を達成しようとしていますか?

すごいです

元の投稿者と同じ問題が発生しました。 。 。愚かな裏技を使ってしまいました。 {literal}{/literal} を使用して変数と JS コードを 1 つずつ区切るだけです。
完全なコードは次のとおりです
すごいです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。