Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Framework, MVC, Router
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Prph
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
ja proponuje podpatrzec symfony winksmiley.jpg
Prph
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
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
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:

  1. <?php
  2. $Request->setParameter('id', 5);
  3. $Kontroler->forward('PokazNews');
  4. ?>


To imitowanie innego zgloszenia. Nie lepiej zrobic redirect?

Adrian.
mike
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.
sf
Cytat(Prph @ 25.07.2006, 23:14 ) *
  1. <?php
  2. $Request->setParameter('id', 5);
  3. $Kontroler->forward('PokazNews');
  4. ?>


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
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
Yyyy o_O ?

Jak ma niby wygladac forward z akcji widokowej do innej widokowej? o_O?

Adrian.
anas
@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
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 winksmiley.jpg

Adrian.
Ociu
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 ? smile.gif
Prph
Ja nie twierdze, ze Symfony jest zle, ale pewne jest ze duzo wazy.
Dlatego podoba mi sie Zend - ma chyba minimum kodu winksmiley.jpg

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
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
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 winksmiley.jpg

Adrian.
pawel_k
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 winksmiley.jpg ). 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.mov
ukazuje 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.
Invision Power Board © 2001-2024 Invision Power Services, Inc.