Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty] Wyświetlanie klas
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
BugsBunny
Długo szukałem czegoś jak to zrobić i męczyłem się ale mi sie nie udaje. Problem wygląda tak
Pobierając dane o czym zapisuję je w klasie - nowe dane nowy obiekt
Obiekt zwaraca mi dane przez tę funckje
  1. <?php
  2. function pisz()
  3. {
  4.  
  5. $pisz = array('tytul' => $this->tytul;
  6. 'dzwiek' => $this->pisz_dzwiek(),
  7. 'stan'  => $this->stan()  );
  8.  return $pisz;
  9. } 
  10. ?>


do Smarty dane przesyłam tak:

  1. <?php
  2.  
  3. $smarty = new Smarty;
  4. $smarty->assign('filmy', $film->pisz());
  5.  $smarty->display( 'index.tpl' );
  6. ?>


$filmy jest to tablica z klasami
index.tpl wygląda tak:
  1. <table border >
  2.    {section name=idx loop=$filmy}
  3.   <tr height="15">
  4.            <td width="350" class="forum">
  5.                  <p>{$filmy[idx].tytul}</p>
  6.         </td>
  7.         <td width="100" class="forum">
  8.           <p>{$filmy[idx].dzwiek}</p>
  9.         </td>
  10.         <td width="100" class="forum">
  11.           {$filmy[idx].stan}
  12.         </td>  
  13.      </tr>
  14.  
  15.      {/section}
  16.  </table>
  17.  <br>

Dane są wyświetlane ale zamiast tam gdzie powinny to na początku dokumentu i tylko wdety gdy podam dokłądnie numer klasy tj. $filmy[0]

Co robię nie tak?
acztery
{$filmy.tytul[idx]}
BugsBunny
Zadziałało tylko że wyswietla mi każdą literę osobno w oddzielnym wierszu.

  1. <?php
  2. function stan()
  3. {
  4. if(($this->film_stan) == 1)
  5.  {
  6.  echo '<font color=\"green\"><b>jest</b></font>';
  7.  }
  8. if(($this->film_stan) == 0)
  9.  {
  10.  echo '<font color=\"red\"><b>brak</b></font>';
  11.  }
  12. }
  13. ?>


Dlaczego nie chce mi tego wyśweitlić??
AxZx
bo przesylasz tylko jedna tablice jednowymariowa
wiec nie potrzebujesz seciotn, ani innych foreach w szablonie smarty
wystarczy ze odwolasz sie tak
Kod
{$filmy.tytul}
{$filmy.dzwiek}
{$filmy.stan}


a co do ostatniego postu to moze poprostu ta zmienna nie rowna sie ani 0 ani 1
nie mozesz jej poprostu wyswietlic i zobaczyc jaka ma ona wartosc?
a tak wogole to nie wiem czy rozumiem twoj problem bo wg mnie to nie jest problem. tak tylko napisalem moze akurat trafilem w sedno:P
BugsBunny
No teraz sięwyswietla dobrze ale dobrze, ale powstaje nowy problem gdyż wczesniej wyswietalłem tak
  1. <?php
  2. $smarty->assign('filmy', $film[0]->pisz());
  3.  $smarty->display( 'index.tpl' );
  4. ?>


czyżbym teraz musiał umieścic to jakos w pętli żeby wpisało mi wszystkie klasy bo takie coś
  1. <?php
  2. $smarty->assign('filmy', $film->pisz());
  3.  $smarty->display( 'index.tpl' );
  4. ?>

NIE DZIAŁA.

Co do tego STAN to wyswietla 1, czyli wszystko jest dobrze, a tego echo wyswietlić nie chce worriedsmiley.gif
AxZx
bo nie masz zmiennej stan, tylko to jest funkcja
  1. <?php
  2.  
  3. if($this->stan() == 1){
  4. echo 'jest stan 1 ';
  5. }
  6. ?>


a co ci generuje funkcja pisz()?
BugsBunny
  1. <?php
  2. function stan()
  3. {
  4. if(($this->film_stan) == 1)
  5.  {
  6.  echo '<font color=\"green\"><b>jest</b></font>';
  7.  }
  8. if(($this->film_stan) == 0)
  9.  {
  10.  echo '<font color=\"red\"><b>brak</b></font>';
  11.  }
  12. }
  13. ?>

Chyba powstałą by jakieś dziwne zapętlenie, jakaś rekurencja szalona czy coś.

  1. <?php
  2. if(($this->film_stan) == 1)
  3.  {
  4.  echo '<font color=\"green\"><b>jest</b></font>';
  5.  }
  6. ?>


przeceiż to jest chyba to samo sadsmiley02.gif
AxZx
jakie zapetlenie masz na mysli?


chyba jednak nie
  1. <?php
  2. $this->film //zmienna
  3. $this->film() //funkcja
  4. ?>
BugsBunny
  1.  <?php
  2.  
  3. if($this->stan() == 1){
  4. echo 'jest stan 1 ';
  5. }
  6. ?>


czyli że niby miałbym wywołać funkcję stan() w funkcji stan() oto mi chodzi.
Wiec jak zrobić z tymi klasami. Bo jakoś musze wyświetlac więcej niż jeden wpis do Smarty.
AxZx
aaa no tak, sorki moj blad, spojrzalem w pierwszym poscie w inna funkcje

jezeli chcesz przekazac wiecej niz jeden wpis do smarty to przekaz tablice dwuwymiarowa

jakos tak to bedzie
  1. <?php
  2. $smarty->assign('zmienna' => array(
  3. array('film' => 'nazwa', 'stan'=>1),
  4. array('film' => 'nazwa', 'stan'=>1)
  5. )
  6. );
  7.  
  8.  
  9. ?>


a w smarty uzyj
Kod
{foreach item=zmienna from=$zmienna}
{$zmienna.film}
{/foreach}


kombinuj a nie pytaj o takie rzeczy:P
BugsBunny
  1. <?php
  2. $smarty->assign('zmienna' => array(
  3. array('film' => 'nazwa', 'stan'=>1),
  4. array('film' => 'nazwa', 'stan'=>1)
  5. )
  6. );
  7.  
  8.  
  9. ?>


Jakos trudno mi to zrobić, bo przeceiż u mnie kążdy wpis to nowy obiekt i nie wiem jak to połączyć sad.gif

Nie ma jakiegoś innego sposobu ?
Aztech
W Smarty istnieje coś takiego jak {sectionelse} i ja to robię tak jeśli tablica przekazywana przeze mnie może być jednoelementowa lub wieloelementowa. Może to nie jest elegancki sposób ale zdaje egzamin.
  1. {* adm_perm_subforum.tpl *}
  2. {* odpowiada za wyświtlenie uprawnień subforum *}
  3. <div class="group">
  4. {section name=list loop=$subforumList}
  5.  <div class="viewhead">
  6.    <img src="templates/admin/graph/forum_edit.gif" alt="edycja forum" title="edycja forum" />
  7.  ID: {$subforumList[list].subforum_id} - <a href="admin.php?action=1,1,edit" title="edytuj">{$subforumList[list].title}</a>| {$subforumList[list].description}</div>
  8.  <div class="rvpanel">
  9. {* wycięty niepotrzebny kod*}
  10.  </div>
  11. {sectionelse}
  12.  {if $listing eq 1}
  13.    <div class="infomsg">Nie utworzono żadnego subforum w systemie robotECS.</div>
  14.  {else}
  15.  <div class="viewhead">
  16.    <img src="templates/admin/graph/forum_edit.gif" alt="edycja forum" title="edycja forum" />
  17.  ID: {$subforum.subforum_id} -<a href="admin.php?action=1,1,edit" title="edytuj">{$subforum.title}</a>| {$subforum.description}</div>
  18.  <div class="rvpanel">
  19. {* wycięty niepotrzebny kod *}
  20.  </div>
  21.  {/if}
  22. {/section}  
  23. </div>


Jakby coś nie było jasne to pytaj
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.