Ciclo foreach smarty

di il
3 risposte

Ciclo foreach smarty

Ciao a tutti! Avrei bisogno di un consiglio riguardo un ciclo foreach su smarty.. ho un'elenco di film che devo far visualizzare. ho utilizzato questo codice:

 {foreach $Titolo as $titolo}
    <ul>
        <li> <a href="#" onclick="sendtitolo(gettitolo('titolo'));"> <div id='titolo'>{$titolo}</div> </a></li>
    </ul>
   {foreachelse}
     <p>Non sono presenti film sul database!</p>
{/foreach}
l'elenco dei titoli viene visualizzato correttamente. il problema sorge all'evento onclick (al click del titolo dovrebbe aprirsi una pagina con tutte le informazioni relative a quel film: autore, genere etc) supponendo che io abbia 3 film salvati sul database, così facendo prende sempre il primo titolo anche se clicco sul terzo film ad esempio! Poichè ho notato che in questo modo:

   <ul>
        <li> <a href="#" onclick="sendtitolo(gettitolo('titolo_film1'));"> <div id='titolo_film1'>{$Titolo.0}</div> </a></li>
        <li> <a href="#" onclick="sendtitolo(gettitolo('titolo_film2'));"> <div id='titolo_film2'>{$Titolo.1}</div> </a></li>
        <li> <a href="#" onclick="sendtitolo(gettitolo('titolo_film3'));"> <div id='titolo_film3'>{$Titolo.2}</div> </a></li>
    </ul>
ovviamente li prendeva correttamente (ma non cicla, quindi non posso optare per questa soluzione in quanto io non so quanti film ho) ho pensato di provare una cosa del genere:

{$var=1}
 <ul>
        <li> <a href="#" onclick="sendtitolo(gettitolo('titolo'));"> <div id='titolo'>{$Titolo.$var}</div> </a></li>
     </ul>
     {$var++}
e funziona! Il problema è come faccio a far ciclare la vriabile $var? con foreach non riesco.. Qualche consiglio? grazie a tutti

3 Risposte

  • Re: Ciclo foreach smarty

    Ammetto che ho scoperto solo ora questo smarty, comunque da quel che ho letto su wikipedia negli esempi, quando cicli un array con foreach devi poi scrivere, nel tuo caso, $titolo@key anziché solo $titolo.

    ciao
  • Re: Ciclo foreach smarty

    Grazie!Ho provato ma il problema non si risolve.. sul tpl i titoli si vedono bene il problema è javascript che si prende sempre e solo il primo titolo..
  • Re: Ciclo foreach smarty

    In alternativa potresti ricavare la lunghezza del vettore (dato che le variabili sono php immagino che devi usare la funzione php count()), e a quel punto al posto del foreach metti un semplice ciclo for(i=0; i<count(Titoli); i++), e al posto di $titolo metti $Titolo.$i.

    ciao
Devi accedere o registrarti per scrivere nel forum
3 risposte