Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem ze smarty
jureusz
post 1.05.2004, 13:19:21
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


Czy istnieje mozliwosc refresh display? Moze ktos juz sie z tym zmierzyl. Tpl'ty wyswietlane sa w kolejnosci np. header, body, footer. W momencie operacji logowania, ktora wykonywana jest przed display body a po display header chcialbym zeby header.tpl sie zmienil (i np. na nim wyswietlac "wyloguj").

[php:1:5bccc585c7]<?php
$smarty->display('header.tpl');

// operacje logowania dla body

// przypisanie np. loginu (w wyniku bylo by np. "Wyloguj jureusz")
$smarty->assign('LOGIN',$userlogin);
// refresh header questionmark.gif

$smarty->display('body.tpl');
?>[/php:1:5bccc585c7]
Go to the top of the page
+Quote Post
Bielo
post 3.05.2004, 17:27:35
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 21.09.2003
Skąd: Truskaw

Ostrzeżenie: (0%)
-----


Miałem duużo podobnych problemów ze smarty np. wstawianie title'a do pliku header.tpl po użyciu display. Przekopałem sie przez cały manual smarty i w końcu zrobiłem własny engine


--------------------
Go to the top of the page
+Quote Post
jureusz
post 3.05.2004, 17:37:40
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


Generalnie to juz znalazlem rozwiazanie, nieco toporne ale w moim przypadku sie sprawdzilo.

Kod
<script>window.location='*.php'</script>


Refresh ...

Jezeli jednak ktos znajdzie inny sposob ... to chetnie skorzystam smile.gif
Go to the top of the page
+Quote Post
rzseattle
post 3.05.2004, 17:52:04
Post #4





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Hey

display jest metoda ktorej z zalozenia powinno sie uzywac na samym koncu skryptu po przetworzeniu wszystkich danych , dlatego najprostszym i poprawnym rozwiazaniem jest przesuniecie wszystkich metod display na koniec skryptu.


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
Bielo
post 3.05.2004, 18:14:10
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 21.09.2003
Skąd: Truskaw

Ostrzeżenie: (0%)
-----


tylko ze przypisuje jakieś dane metodą assign i nazwe szablonu do ktorego przypisuję dane podaje sie dopiero przy display


--------------------
Go to the top of the page
+Quote Post
rzseattle
post 3.05.2004, 19:12:54
Post #6





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cytat
tylko ze przypisuje jakieś dane metodą assign i nazwe szablonu do ktorego przypisuję dane podaje sie dopiero przy display

No tak nazwe szablonu podaje sie przy dislpay (lub fetch ), ale nie rozumiem do czego dazysz ? Masz dane przypisujesz je do szablonu i na koncu go wyswietlasz. SMARTY nie musi wiedziec ktorego szablonu uzyje podczas przypisywania zmiennych przez assign. Jesli odwrocisz kolejnosc to pojawiaja sie wlasnie takie problemy jak w pierwszym poscie.


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
Bielo
post 3.05.2004, 19:46:12
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 21.09.2003
Skąd: Truskaw

Ostrzeżenie: (0%)
-----


a co jak np powtórzą sie nazwy w assignach??


--------------------
Go to the top of the page
+Quote Post
rzseattle
post 3.05.2004, 20:22:35
Post #8





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cytat
a co jak np powtórzą sie nazwy w assignach??
To owszem jest bardzo powazny problem przy budowaniu bardzo rozwinietych stron/systemow. SMARTY niestety jak dotat nie oferuje mozliwosci przypisywania zmiennych bezposrednio do danego obiektu szablonu. Poradzic sobie z tym mozna na wiele sposobow. Najprostszym jest uzywanie prefixow czyli np {$header_title} , {$center_content}, ostatnio sam kombinuje z blokami ktore by pozsiadaly wlasna przestrzen nazw. Jednak wyswietlanie czesci szablonu przed koncemdzialania skryptu zdecydowanie jest zlym nawykiem i powoduje powstawanie wielu uciazliwych niedogodnosci.


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
jureusz
post 3.05.2004, 22:59:42
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


Cytat
display jest metoda ktorej z zalozenia powinno sie uzywac na samym koncu skryptu po przetworzeniu wszystkich danych , dlatego najprostszym i poprawnym rozwiazaniem jest przesuniecie wszystkich metod display na koniec skryptu.


... a jak to wyglada w przypadku gdy roznorodnosc warunkow powoduje zmiane wyswietlen tpl (body) np.:

[php:1:cc49ce0f7f]<?php
$smarty->display('header.tpl');
if(isset($_GET['cos'])) {
$smarty->display('body.tpl');
}
else {
$smarty->display('body2.tpl');
}
?>[/php:1:cc49ce0f7f]
Go to the top of the page
+Quote Post
Bora
post 3.05.2004, 23:41:57
Post #10





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

Ostrzeżenie: (0%)
-----


[php:1:1e34a2ce70]<?php
//$smarty->display('header.tpl'); najlepiej include przez template w pliku *.tpl
if(isset($_GET['cos'])) {
$schemat='body.tpl';
}
else {
$schemat='body2.tpl';
}
// .... reszta kodu.
$smarty->display($schemat);
?>[/php:1:1e34a2ce70]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 02:37