2009-08-16 4 views
14

Smartyでは、json_encode()がPHPで行うように、標準関数、または配列からjsonを生成する簡単な方法はありますか?実際には、スマートな文書にはないようですが、とにかく尋ねたいと思っていました。スマートでjsonを生成する方法は?

ありがとう、 Sinan。

+0

Smartyのは結局PHPに翻訳されています

はjavascriptを使用してNOFILTERフラグを配列を使用することができるようにも特殊文字をエスケープ避けるとするには? :) – Zed

+4

@Al、コメントは、私たちのために働く企業によって定められたものであり、私たちのような単なる人間ではありません。あなたのようなコメントを扱うことは、それらの要件よりも悪いです。乾杯。 – Sinan

答えて

63

これは動作するはずです。 @は、配列全体に対して修飾子を実行します。それ以外の場合は、各要素に対してそれを行います。

{$myarray|@json_encode} 

$escape_htmlが有効になっている場合は、nofilterを使用する必要があります:

{$myarray|@json_encode nofilter} 
+0

ありがとう! –

+0

@モディファイアについて知りませんでした!これは質問に答えました。 – karnage

+3

これは最高の答えです。 – MrBojangles

0

私には分かりません。 json_encode()の結果を$ smarty-> assign(...)を使って 'PHPコード'のスマート変数に代入して、それをあなたのテンプレートで使うことができます。

json_decode()にもSmarty extensionがあります。これに基づいて反対のための独自の拡張を書くのは難しいことではありません。

+0

{$ var | json_encode}のような方法があると思っていましたが、とにかくありがとうございます。 – Sinan

+0

+1、拡張のアイデアは良いです。 – Sinan

4

あなたはその後、 $smarty->assign()機能を使用してSmartyのに値を割り当てるウルPHPコードでjson_encode()を使用する必要があります。その後、あなたは javascriptを使ってurテンプレートファイルでその値を解析する必要があります。

コードスニペット:

{literal} 
<script> 
var json = JSON.parse('{/literal}{$urarray}{literal}'); 
//another statments 
</script> 
{/literal} 
+0

JSON.parseがトリックを行いました!ありがとうございました !! – Swathi

9

{$myarray|@json_encode}が実際にJSONでエンコードされた配列を発するないが、それはまた、JavaScriptで配列が使用できなくなって、特殊文字をエスケープ。右、なぜステップを保存しない...

{$myarray|@json_encode nofilter} 
+0

これが受け入れられる回答である必要があります。 –

+0

これは、Smartyクラスに$ escape_htmlがtrueに設定されている場合にのみ適用されます。私はあなたがそれを正しくやっているならば、それはすべきだと思います。 – Andrew

関連する問題