Ciclo foreach smarty

di Anonimizzato14975 il
3 risposte
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

  • 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
  • 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..
  • 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