![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jak wykonywane sa szablony w ZendFramework?
Plik szablonu (.phtml):
Plik kontrolera:
Jak to sie odbywa, jak w pliku .phtml odbierana jest wartosc 'text'? Probowalem przegladac Zend_View ale nie moglem dojsc do tego... Ten post edytował kicaj 25.10.2007, 13:43:23 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Podejrzewam, że wykorzystane są do tego wszystkie metody magiczne. Przede wszystkim __get() i __set().
Szukaj pod tym kątem. Podobnie jets w symfony. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dokladnie to nie o to chodzilo mi...
Wykorzystanie metod magicznych sam dotychczas uzywalem, bardziej mi chodzi o to w jaki sposob pobierany (file, file_get_contents?) jest plik szablonu (sciezka tworzy sie z: kontroler/akcja) i jak w pliku szablonu odczytywane sa te wartosci? Nie wiem czy wyrazilem sie jasno:/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
zwykły include
edit: Proszę, wszystko jest w metodzie Zend_View::_run() Ten post edytował LBO 22.10.2007, 11:56:30 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam w sumie problem jak zrobic cos a`la Zend_View
1. W wywolanym kontrolerze ustawiam zmienne:
Pliki szablonow:
Chcialbym uruchamiac to w sposob taki:
Mam problem jak to wszystko polaczyc ze soba, zeby zgrabnie dzialalo Ten post edytował kicaj 24.10.2007, 23:23:26 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ja mam tak:
index.php :
FrontController :
Kontroller akcji :
Akcja :
tpl :
W tpl nie tak jak Ty napisałeś tylko : a tablice albo foreach albo $array[0] Pozdrawiam |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ooo dzieki o wlasnie takie nakreslenie chcialem "uslyszec", mam kilka zastrzezen:
1. Zmien CCC_Controller_Action na abstrakcje:
2. Zastanawiam sie jak najciekawiej wyeliminowac powtarzane liniki w metodach kontrolera: $site = $this->objView->display('index/index');
Probowalem z debug_backtrace() ale nie zwraca mi nic ciekawego... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
To akurat bez sensu, u mnie w każdym kontrollerze akcja Index robi coś innego, a jeśli chodzi Ci o wywołanie to robi to Router (jeśli nie jest podana akcja to Router zwraca index)
$con - to nazwa podkatalogu w views a jednocześnie nazwa wywoływanego przez Router kontrollera $akc - to nazwa tpl w /views/$akc/ a jednocześnie nazwa wywoływanej akcji |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
1. oznaczenie metody jako abstrakcyjnej nie definiuje ciala, lecz tylko wymaga na dziedziczonej klasie istnienia danej metody
2. W sumie to podobnie rozwiazalem:) Dzieki wielkie za nakreslenie... |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. oznaczenie metody jako abstrakcyjnej nie definiuje ciala, lecz tylko wymaga na dziedziczonej klasie istnienia danej metody I w ten sposób ograniczyłeś elastyczność Zend Framework'a. Domyślną akcję (index) można w prosty sposób zmienić na dowolnie inną Kod Zend_Controller_Front::setDefaultAction() edit: Sorry, nie doczytałem za dokładnie, że robisz coś własnego. Tak czy siak Zendowe rozwiązanie jest multielastyczne. Ten post edytował LBO 25.10.2007, 22:36:29 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
ad 2. Nie mam tak rozwiązane, ale wymyśliłem to dla Ciebie.
ad 1. Chyba coś Ci się pomyliło z interfejsem. Jeśli utworzysz pustą metodę abstrakcyjną to dostaniesz coś takiego : Fatal error: Abstract function CCC_Controller_Action::init() cannot contain body in /var/www/jg_8/lib/CCC/Controller/Action.php on line 17 (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif) edit : i to samo oczywiście będzie z abstract function IndexAction(); // podstawowa akcja Ten post edytował jang 25.10.2007, 22:45:05 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
ad 1. Chyba coś Ci się pomyliło z interfejsem. Jeśli utworzysz pustą metodę abstrakcyjną to dostaniesz coś takiego : Fatal error: Abstract function CCC_Controller_Action::init() cannot contain body in /var/www/jg_8/lib/CCC/Controller/Action.php on line 17 (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif) Wiesz co napisałeś w ogóle? Metoda abstrakcyjna musi być pusta i o tym informuje treść błędu. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
@jang: Tworzac klase abstrakcyjna z metodami abstrakcyjnymi (czytaj: bez ciala metody) wymuszasz istnienie tych metod w klasie potomka...
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
To w takim razie skąd ten błąd ? Ten post edytował jang 25.10.2007, 22:57:23 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Stąd:
Kod abstract function init() { } To powinno wyglądać tak: Kod abstract function init();
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, o tym zapomniałem. Dzięki za przypomnienie, ale i tak pozostanę przy moim rozwiązaniu - bez abstract. Na pewno trafią się kontrollery w których metoda init() nie będzie mi potrzebna. Pewnie też dlatego w Zend tak też to zrobili.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Panowie, od tego są interfajsy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Btw. mamy w Rapide identyczny system szablonów (jeśli można to nazwać szablonem, bo webmaster ma tu dostęp do silnika php) - jest on najszybszy z obecnie znanych... |
|
|
![]()
Post
#18
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Cyk, o to chodzi. Najprostsza implementacja: http://forum.php.pl/index.php?showtopic=42897 jeżeli potrzebujesz czegoś więcej - patrz Savant.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:40 |