0

申し訳ありませんが、私は JS マスターではなく、これについては完全に無知です。javascript 出力で smarty を使用して multidmensionall 配列を生成するにはどうすればよいですか。

var kreator_elements = new Array();

{foreach $kreator_elements as $element}

if(!kreator_elements[{$element->id_atrib}] instanceof Array)
    var kreator_elements[{$element->id_atrib}] = new Array();

kreator_elements[{$element->id_atrib}][{$element->id}] = new Array();
kreator_elements[{$element->id_atrib}][{$element->id}]['u_img'] = '{$element->getImageLink()}';
kreator_elements[{$element->id_atrib}][{$element->id}]['u_ico'] = '{$element->getIconLink()}';

{/foreach}

[] などを使用して、いくつかのアプローチを試しました。今のところ、どれもうまくいきません。コンソールで常に何らかのエラーが発生します。

4

1 に答える 1

1

Smarty を使用せずに、純粋な PHP で連想配列を構築してみてください。

$tmp = array();
foreach ($kreator_elements as $element) {
    $tmp[$element->id_atrib][$element->id] = array(
        'u_img' => $element->getImageLink(),
        'u_ico' => $element->getIconLink()
    );
}
$kreator_elements_json = json_encode($tmp);

すべての文字列が UTF-8 でエンコードされていることを確認してください。そうしないと、json_encode が失敗します。そうでない場合は、非 Unicode 文字列ごとに iconv() を実行します。

結果は正しい javascript オブジェクトであり、smarty は必要ないため、エコーすることができます。

ある言語を別の言語で構築するときは、常にできるだけ少ない言語を使用するようにしてください。本当に必要な場合は、各文字列をエスケープすることを忘れないでください。' 記号または改行が 1 つあるだけで、生成されたコードで構文エラーが発生する可能性があります。

于 2013-02-27T14:10:21.193 に答える