1

php(adodb)とsmartyを使用してjquery関数で画像アドレスのリストを出力したい。

私はこれをする必要があります:

 $.lightbox(["/media/photos/tmb/4.jpg", "/media/photos/tmb/3.jpg", "/media/photos/tmb/6.jpg"]);

私はこれで試してみます(テストのために簡単です):

 {/literal} {if $photos} $.lightbox(["{"\", \""|implode:$photos}"]); {/if}{literal}

結果は:

 $.lightbox(["Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array"]); 

実際、配列を画像アドレスに置き換える必要があります。

画像アドレス(動的ループ):

{$relative}/media/photos/tmb/{$photos[i].PID}.jpg

jquery関数なしで、私はこのメソッドで画像をリストします:

{if $photos}
{section name=i loop=$photos}
{$relative}/media/photos/tmb/{$photos[i].PID}.jpg
{/section}
{/if}

phpコード:

    $sql            = "SELECT PID, caption FROM photos WHERE AID = " .$aid. " AND status = '1' LIMIT " .$limit;
    $rs             = $conn->execute($sql);
    $photos         = $rs->getrows();
    $smarty->assign('photos', $photos);

必要に応じてリストを印刷する方法は?できますか?

4

1 に答える 1

1

最も簡単な方法は、配列をテンプレートに割り当てて、を使用することjson_encode()です。Smartyはあまり使用しませんが、次のことができると思います。

{$yourImageArray | json_encode}

編集:これで、配列に含まれる内容が最終的にわかりました。

配列([0] =>配列([0] => 13 [PID] => 13 [1] =>[キャプション]=>)[1] =>配列([0] => 14 [PID] => 14 [1] => [caption] =>)[2] =>配列([0] => 15 [PID] => 15 [1] =>[caption] =>)[3] =>配列([ 0] => 30 [PID] => 30 [1] => salam [caption] => salam)[4] =>配列([0] => 17 [PID] => 17 [1] => [caption ] =>)[5] =>配列([0] => 31 [PID] => 31 [1] =>[キャプション]=>)[6] =>配列([0] => 32 [PID] => 32 [1] => [caption] =>)[7] =>配列([0] => 33 [PID] => 33 [1] => [caption] =>)[8]=>配列([0] => 34 [PID] => 34 [1] =>[キャプション]=>))

これがあなたがする必要があることです。コントローラ内:

$photoFileNames = array();
foreach ($photos as $photo) {
    $photoFileNames[] = $photo['PID'];
}

$smarty->assign('photoFileNamesJSON', json_encode($photoFileNames));

テンプレートでは、を介して配列にアクセスできます$photoFileNamesJSON。次回質問を投稿するときは、最初からすべての情報を含めてください。質問に具体的であれば、より具体的な回答を提供する方がはるかに簡単です。

于 2012-08-12T22:09:00.710 に答える