Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]początki ze Smarty - problem z strukturą plików aplikacji
Forum PHP.pl > Forum > Przedszkole
eki
Witam!

Zaczynam przygodę ze Smarty i mam następujący problem. Zauważyłam, że jeśli jakieś dane wysyłam z pliku index.php do plików tpl to wszystko działa ok, ale kiedy te same dane wysyłam z innego pliku php to nie działają. Tym bardziej kiedy próbuję jeden szablon załadować do jeszcze innego. Przykład: w pliku menu.php są dane dla menu.tpl a te są includowane do index.tpl. Jeśli zawartość menu.php przerzucę do index.php to wszystko działa :/ Nie rozumiem tego
Crozin
Może kod jakiś?
eki
index.php
  1. <?php
  2. require '../libs/Smarty.class.php';
  3. include ('connect.php');
  4. $smarty = new Smarty;
  5. include ('scripts/main_menu.php');
  6. $smarty->display('index.tpl');
  7. ?>

index.tpl
  1. {config_load file=test.conf section="setup"}
  2. {include file="header.tpl"}
  3. {include file="menu.tpl"}
  4. <div id="site">
  5. <div id="left-column">
  6. {include file="login.tpl"}
  7. {include file="tips.tpl"}
  8. </div>
  9. <div id="center-column">
  10. {include file="advertise.tpl"}
  11. {foreach item="powiat" from=$powiaty}
  12. {$powiat}<br>
  13. {/foreach}
  14. </div>
  15. </div>
  16. {include file="footer.tpl"}

advertise.php
  1. <?php
  2. require '../../libs/Smarty.class.php';
  3. $smarty->new Smarty;
  4. $zapytanie="SELECT * FROM ogloszenia WHERE aktywny=1 ORDER BY data_publikacji DESC";
  5. $wynik=mysql_query($zapytanie) or die(mysql_error());
  6. while($wiersz=mysql_fetch_assoc($wynik)) {
  7. id[]=$wiersz['id'];
  8. $nazwa[]=$wiersz['nazwa'];
  9. $data_publikacji[]=$wiersz['data_publikacji'];
  10. }
  11. $smarty->assign('id',$id);
  12. $smarty->assign('nazwa',$nazwa);
  13. $smarty->assign('data_publikacji',$data_publikacji);
  14. $smarty->display('advertise.tpl');
  15. ?>

advertise.tpl
  1. <h2>Ogłoszenia</h2>
  2. {include file="search.tpl"}
  3. <table id="advertise">
  4. <th><td></td><td></td><td></td><td></td><td></td><td></td></th>
  5. {section name=id loop=$nazwa}
  6. <tr><td></td><td></td><td>{$nazwa[id]}</td></tr>
  7. {/section}

Jeśli dane w advertise.php wyślę do index.tpl to wszystko działa poprawnie, a jeśli najpierw do advertise.tpl a następnie chcę je wykorzystać w index.tpl to nie dziłają :/

Czy mógłby mi ktoś pomóc z tymi Smartami? Potrzebuję tylko wskazówki jak one działają na większej ilości plików, w książce są przykłady na 2, 3 plikach jedynie :/
rocktech.pl
Witam.
Spróbuj tak w indeksie.

  1. <?php
  2. require '../libs/Smarty.class.php';
  3. include ('connect.php');
  4. $smarty = new Smarty;
  5. include ('scripts/main_menu.php');
  6. include ('scripts/advertise.php');
  7. ........
  8. include ('scripts/cala_reszta.php');
  9.  
  10. //włącz debug i zobacz jakich zmiennych ci jeszcze brakuje
  11. $smarty->debugging=true;
  12. $smarty->display('index.tpl');
  13. ?>


Z pozostałych includowanych plików wywal.

  1. require '../../libs/Smarty.class.php';
  2. $smarty->new Smarty;
eki
To znaczy, że wszystkie pliki php trzeba włączyć do pliku index.php? Bo inaczej nie będą działać?
rocktech.pl
Cytat
To znaczy, że wszystkie pliki php trzeba włączyć do pliku index.php? Bo inaczej nie będą działać?

Pliki nie, ale zmienne do szablonu przydałoby się mieć. Przyjrzyj się może uda ci się usprawnić trochę struktutrę aplikacji ?

W tym momencie tworzysz obiekt smarty w każdym pliku .
Wystarczy raz i potem przed wywołaniem ...
  1. $smarty->display('index.tpl');

Upewnij się, że wszystkie zmienne i tablice na których operujesz w szablonie są zainicjowane.
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.