Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Framework, MVC, Router, Pomysl na wykonanie przekierowania na inna akcje
Prph
post
Post #1





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
pawel_k
post
Post #2





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

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


ja proponuje podpatrzec symfony (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Prph
post
Post #3





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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?

Ten post edytował Prph 25.07.2006, 18:41:42
Go to the top of the page
+Quote Post
bela
post
Post #4


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


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
Go to the top of the page
+Quote Post
Prph
post
Post #5





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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.

Ten post edytował Prph 25.07.2006, 22:15:39
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
sf
post
Post #7





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


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...
Go to the top of the page
+Quote Post
anas
post
Post #8





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


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
Go to the top of the page
+Quote Post
Prph
post
Post #9





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Yyyy o_O ?

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

Adrian.
Go to the top of the page
+Quote Post
anas
post
Post #10





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


@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
Go to the top of the page
+Quote Post
Prph
post
Post #11





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Adrian.
Go to the top of the page
+Quote Post
Ociu
post
Post #12





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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 ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Prph
post
Post #13





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Ja nie twierdze, ze Symfony jest zle, ale pewne jest ze duzo wazy.
Dlatego podoba mi sie Zend - ma chyba minimum kodu (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
NuLL
post
Post #14





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


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]
Go to the top of the page
+Quote Post
Prph
post
Post #15





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Adrian.
Go to the top of the page
+Quote Post
pawel_k
post
Post #16





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 01:19