Keenic
26.12.2007, 17:40:10
Jak mam includowac plik tpl tak aby czytal on zmienne z pliku, ktory mu je przekazuje?
Mam plik menu.php i menu.tpl i jak includuje menu.tpl to nie wyswietlaja sie zmienne wynaczone w menu.php. Natomiast gdy includuje plik menu.php to wyskakuje mi blad. Pliki tpl mam w folderze wewnatrz templates.
prgTW
26.12.2007, 21:21:09
menu.php
<?php
$smarty->assign('x', 'wartosc')
?>
menu.tpl
to jest {$x}
Keenic
26.12.2007, 22:16:39
Chyba nie zrozumiales o co mi chodzi. Ja chce includowac plik menu.tpl tak aby mial on wartosci zmiennych z menu.php
prgTW
26.12.2007, 22:22:11
Jak chcesz "inkludować" pliki szablonów do logiki działania aplikacji!? Pliki szablonów definiują wygląd przecież. Chcesz zainkludować do PHP plik szablonu tak żeby był on przeparsowany przez parser PHP czy jak,bo nie rozumiem zdania "Jak mam includowac plik tpl tak aby czytal on zmienne z pliku, ktory mu je przekazuje?"
includowanie to dołączenie kodu znajdującego się w pliku zewnętrzym i poddanie go parsowaniu przecież
Chcesz, żeby szablon menu.tpl widział wszystkie zmienne zadeklarowane w pliku menu.php (bo ja to tak rozumiem)?
Keenic
26.12.2007, 22:30:27
No moze torche napmieszalem. Wiec tak:
Mam plik index.php i index.tpl. Wiadomo, wszystko ladnie sie tam wyswietla. Chce teraz do index.tpl dodac plik menu.tpl tak aby byly przekazyne do neigo zmienne z menu.php.
Mam nadzieje, ze wyjasnilem.
prgTW
26.12.2007, 22:31:42
"zmienne z menu.php."
jakie zmienne!
przeciez zmienne smartom przekazujesz przez ->assign()
index.php:
$smart->assign('x', 'wartosc');
1.tpl:
to jest {include file="2.tpl"}
2.tpl:
wartosc {$x}
Keenic
26.12.2007, 22:40:34
Postaram sie jeszcze bardziej wytlumaczyc choc nie wiem czy mi to wyjdzie.
Chce do pliku index.tpl dolaczyc plik menu.tpl wraz z tym co powinien ten plik wyswietlac.
Gdy daje w index.tpl
{inlude file="sciezkadopliku/menu.tpl"}
to wyswietla mi sie tylko zawartosc pliku menu.tpl bez tego co powinno wyswietlac po przekazaniu przez menu.php
prgTW
26.12.2007, 23:06:15
index.tpl:
{include file="sciezkadopliku/menu.tpl" wyswietl="to wyswietli menu.tpl"}
menu.tpl:
{$wyswietl}
ale przeciez tym co ma sie wyswietlac steruje PHP a nie szablon, szablon ma tylko zdefiniowac JAK to "cos" ma sie wyswietlic, poczytaj o MVC i wzorcach projektowych
Keenic
26.12.2007, 23:07:36
Wiem, ze tak mozna, ale ja chce aby menu.tpl wyswietlil zmienne, ktore przekazuje mu plik menu.php
prgTW
26.12.2007, 23:13:43
Moment, bo kompletnie nie kumam ocb. Jakie masz pliki (nazwy podaj i tych się trzymajmy tylko)? Napisz po kolei jak chcesz żeby zadziałał skrypt (w stylu: Plik menu.php przekazuje zmienną X plikowi 1.tpl, plik 1.tpl dołącza 2.tpl, plik 2.tpl ma pokazać zmienną X) - wtedy do czegoś dojdziemy
Keenic
26.12.2007, 23:24:03
Dobra.
Mam 3 pliki, index.tpl, menu.tpl i menu.php. Chce dolaczyc plik menu.tpl do pliku index.tpl, ale w taki sposob aby wyswietlal on to co powinien gdyby otworzylo sie go przez plik menu.php.
prgTW
26.12.2007, 23:29:32
"Mam 3 pliki, index.tpl, menu.tpl i menu.php"
Mimo to wnioskuje że masz jeszcze index.php który normalnie odpala wszystko, a Ty chcesz żeby przez wywołanie menu.php a nie index.php wyświetliło się to samo tak?
menu.php:
header('Location: index.php');
die();
Keenic
26.12.2007, 23:32:14
Nie, chce aby przez wywolanie index.php wyswietlal mi sie inedex.tpl z zaincludowanym menu.tpl, ktory wyswietla dane z menu.php
prgTW
26.12.2007, 23:35:59
index.php:
include 'menu.php';
$smarty->display('index.tpl');
menu.php:
$smarty->assign('cos', 'jakies cos');
index.tpl:
{include file="menu.tpl"}
menu.tpl:
pokaze sobie {$cos}
niech menu.php tylko przydziela smartowi odpowiednie rzeczy a niech zawsze plikiem wywolujacym bedzie index.php
Keenic
26.12.2007, 23:49:03
Zrobilem tak i wyskakuje mi taki blad
Fatal error: Cannot redeclare class smarty in C:\Program Files\WebServ\httpd-users\smarty\simple-page\libs\Smarty.class.php on line 65
prgTW
26.12.2007, 23:51:27
plik klasy smarty dolaczaj tylko raz (include_once, require_once)
Keenic
26.12.2007, 23:57:04
Dziala, dzieki za pomoc.
prgTW
27.12.2007, 00:02:52
spoko (zesmy sie dogadali)
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.