Prph
25.07.2006, 17:55:35
Witam,
Powiem z gory, ze nic mi do glowy nie przyszlo przegladajac Mojavi i ZendFramework.
Obecna sytuacja przypomina troche Zend Framework.
Przychodzi żądanie HTTP. Router jest odpowiedzialny za wiciagniecie z niego informacji (jaka akcja, jakie parametry). Nastepnie tworzy token, ktory zawiera nazwe akcji oraz parametry.
Token przekazywany jest do Dispatchera, ktory ma za zadanie utworzyc obiekt akcji, przekazac mu parametry i uruchomic akcje.
Wykonanie nastepnej akcji zrealizowalem w prosty sposob. W klasie akcji definiuje metode setNext($sActionName : string [, $aParameters : array]).
Ale jak moznaby zrealizowac przekierowanie na inna akcje w przypadku niepowodzenia? Co mam na mysli?
Filtr bezpieczenstwa. Sprawdza, czy uzytkownik zalogowal sie, czy ma odpowiednie prawa. Jezeli nie to powinien przeniesc uzytkownika do logowania.
Mozna zrobic header('Location: ble ble'), ale nie podoba mi sie ta metoda.
Jakies pomysly?
Adrian.
pawel_k
25.07.2006, 18:05:04
ja proponuje podpatrzec symfony
Prph
25.07.2006, 18:13:34
Podpatrywanie nie wychodzi mi na dobre, bo zaraz pol frameworka przebuduje tylko po to, ze jedna rzecz mi sie spodoba.
Pobralem Symfony. Wyglada troche jak klon Mojavi. Wiedziac, jak dziala to w Mojavi, nic madrego nie wymyslilem. Wiec z Symfony jest podobnie :/
Jakies pomysly?
Edit:
Ciagle o tym mysle i w zasadzie uwazam, ze redirect jest calkiem dobrym pomyslem. Dlaczego?
Chociazby dlatego, ze adres url bedzie wskazywal aktualne miejsce.
Korzystajac z forwardingu Mojavi (domyslame sie ze Symfony dziala podobnie), zdarzaly sie sytuacje, ze na ekranie mialem liste kategorii sklepu, a na pasku adres wskazujacy na dodanie produktu... Wszystko dlatego, ze po dodaniu produktu forwardowalem na liste kategorii...
Co o tym myslicie?
bela
25.07.2006, 20:07:37
Bo w Symfony (i pewnie Mojavi) jest podział na redirect i forward. Jedno odpowiada za dodanie akcji do kolejki, a drugiego wyrzuca odpowiedni nagłówek do przeglądarki
Prph
25.07.2006, 22:14:22
Heh co ciekawe, W symfony wykonywana jest jedna sztuczka, ktora osobiscie bardzo mi sie nie podoba.
W przykladach bylo cos takiego (wymyslam sytacje):
wykonywana byla akcja DodajKomentarz. Na jej koncu autor chcial powrocic do PokazNews, tyle ze chcial aby to byl dokladnie ten news, do ktorego dodano komentarz. Wiec wykonal cos takiego:
<?php
$Request->setParameter('id', 5);
$Kontroler->forward('PokazNews');
?>
To imitowanie innego zgloszenia. Nie lepiej zrobic redirect?
Adrian.
mike
25.07.2006, 22:22:32
Cytat(Prph @ 25.07.2006, 23:14 )

To imitowanie innego zgloszenia. Nie lepiej zrobic redirect?
A po co?
Przecież to nie wymaga przeładowania strony.
Przekierowanie kontrolera na inną akcję działa równie dobrze.
Cytat(Prph @ 25.07.2006, 23:14 )

<?php
$Request->setParameter('id', 5);
$Kontroler->forward('PokazNews');
?>
To imitowanie innego zgloszenia. Nie lepiej zrobic redirect?
Adrian.
Sam takie coś robie w swoim frameworku, wg. mnie to jest fajna sprawa i wydaje mi się jak najbardziej na miejscu. Jak napisali koledzy wyżej istnieje forward i redirect więc możesz zastosować redirect jeśli Ci to bardziej odpowiada...
anas
27.07.2006, 22:12:52
Hej.
Moim zdaniem lepiej jest zdecydować kiedy redirect, a kiedy forward -> np. można podzielić akcje na dwa typy: generujące widok i logiczne. Logczine wykonujące pewne operacje np. w łancuchu. a każdy łańcuch niech się kończy akcją typu widokowego.
I tak w przypadku akcji logicznych robiłbym forward, ale już w przypadku widokowych i ewentualnego oddania kontroli kolejnej akcji widokowej redirect - dlaczego? - chociażby ze względu na indeksację w wyszukiwarkach. To co się dzieje w tle może być forwardowane, ale to co zmienia widoki - powinno być identyfikowane innym adresem url - chociażby zapisanie bookmarka.
Pozdrawiam
anas
Prph
27.07.2006, 23:27:08
Yyyy o_O ?
Jak ma niby wygladac forward z akcji widokowej do innej widokowej? o_O?
Adrian.
anas
28.07.2006, 13:08:11
@Prph: Poprzez redirect url.
Jedynie akcje logiczne powinny byc forwardowane wewnetrznie w jednym wywolaniu - dlatego ze nie maja wplywu na generowany widok.
Czasem jednak dzieje się tak że ktoś wchodzi na stronę np. moje konto, ale nie jest zalogowany, wtedy trzeba go przekierować na formularz logowania - tutaj ja uważam że rozsądniej jest stosować redirect ze zmianą URL'a.
pozdrawiam
anas
Prph
29.07.2006, 10:10:10
Tez jakos jestes za redirectem. Ale jednak forward musze miec opracowany. Pomyslalem, ze zrobie go na wzor Zenda. W ogole Zend podoba mi sie, bo w przeciwienstwie do Mojawi, a o Symfony to juz nie wpsominajac jest lekki.
Za glowe sie zlapalem jak zobaczylem Symfony. To taki 3x wieksze Mojavi

Adrian.
Ociu
29.07.2006, 13:10:06
Co do symfony:
Cytat
Autorzy tego frameworka wybrali to co najlepsze z innych frameworków - organizacje z Mojavi, I18n z prado, dodali idee z Ruby i stworzyli coś bardzo dobrego..
Już wiesz czemu ?
Prph
29.07.2006, 14:17:14
Ja nie twierdze, ze Symfony jest zle, ale pewne jest ze duzo wazy.
Dlatego podoba mi sie Zend - ma chyba minimum kodu

Z kolei nie podoba mi sie w Zend to, ze trzeba za duzo sie nagimnastykowac. Dlatego majac male doswiadczenie z pisaniem frameworka, znajac Mojavi, znajac Zenda, przegladadajac Phienda, Phienda2 i inne, buduje wlasny kod.
NuLL
29.07.2006, 20:48:49
Cytat
Dlatego majac male doswiadczenie z pisaniem frameworka
[OT]: Frameworki powinny byc pisane przez osoby doswiadczone aby zawieraly w sobie to co najlepsze i nie uczyly zlych praktyk[/OT]
Prph
29.07.2006, 22:40:27
Owszem... pod warunkiem, ze sa przeznaczone dla sporej grupy programistow.
Jezeli ja chce programowac aplikacje sam i raczej nie beda umieszczane za loadbalancerami, to chyba moge pokusic sie o wlasny framework.
Dlaczego pisac wlasny? Sa przynajmniej dwie ogoromne zalety:
1. Mozna tak dobrac poszczegolne komponenty, aby dostosowac framework do swojego stylu.
2. Bardzo, ale to bardzo wiele mozna nauczyc sie piszac framework. Ja OOP nauczylem sie piszac framework

Adrian.
pawel_k
30.07.2006, 01:35:19
symfony ma tą wielką zaletę że jest dla ludzi leniwych. jeśli klepanie kodu kogoś bawi to fajnie jest pisać własny kod (mnie już to tak nie bawi bo od początku nie było to moję marzenie na wiele lat, a raczej jeden z niezbędnych etapów w zyciu

). jesli jednak juz nie masz tych wypieków na twarzy widząc kawałek kodu warto się zainteresować frameworkiem.
dla ludzi chcących dołączyć do grona leni a nie są jeszcze przekonani do symfony czy nie miały z nim styczności polecam film (ok 20 minut):
http://downloads.symfony-project.com/demo/...r_commented.movukazuje on potęgę symfony. dzięki symfony możemy storzyć spory system dodając zaledwie pareset linni własnego kodu :0
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.