Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony] routing? gdy moduł nie istnieje...
adalgrim
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.11.2005
Skąd: Zabrze

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


Witam,

Może mi ktoś powiedzieć w jaki sposób odsyłać zawsze na stronę główną strony, jeżeli nie istnieje wpisywany adres?
Po zainstalowaniu symfony i wpisaniu jakiegoś dziwnego adresu pokazuje błąd 404, którego nie chcę w swojej aplikacji (IMG:style_emoticons/default/smile.gif)

Routing jest domyślny tj.:

default_index:
url: /:module
param: { action: index }

default:
url: /:module/:action/*


I teraz dajmy na to tworzymy moduł news, który zostanie złapany przez default_index, a jeżeli ktoś się pomyli i wpisze "new" to jak odesłać na stronę główną bez strony 404?

Czy jest inna opcja niż pisanie dla każdego modułu osobnego routingu?

Z góry dziękuję za pomoc.

Ten post edytował adalgrim 29.05.2010, 13:08:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Tworzysz akcję error404 w module np. default, ustawiasz go w settings.yml jako akcja do obsługi błędu 404, a w tej akcji przekierowujesz lub forwardujesz do strony głównej.

Inny sposób to regułka (na samym dole pliku routing.yml):

url: /*

Aczkolwiek wg mnie przy literówce użytkownik powinien być przekierowany na stronę błędu, w której zawrzesz np. informację o tym, czy oby na pewno adres jest poprawny. Jeśli użytkownik zostanie przekierowany na stronę główną, a spodziewał się czegoś innego, to zwyczajnie pomyśli "wtf" - ale to już kwestia użyteczności.

Ten post edytował -=Peter=- 29.05.2010, 19:41:21
Go to the top of the page
+Quote Post
adalgrim
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.11.2005
Skąd: Zabrze

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


@Peter Twoja reguła nie zadziała, bo wcześniej dopasowana jest reguła default_index. Właśnie też nad tym myślałem w ten sposób, ale nie chciało złapać.

Kwestia sporna czy wyświetlać błąd czy odsyłać na stronę główną. Zależy co komu potrzebne. Natomiast 404 to też nie to o czym myślę (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
eamzeet
post
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 4
Dołączył: 31.03.2010
Skąd: Kraków

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


Ale 404 będzie chyba najlepszym rozwiązaniem. Są jakieś przeciwwskazania przed zastosowaniem tego u Ciebie ?
Go to the top of the page
+Quote Post
adalgrim
post
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.11.2005
Skąd: Zabrze

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


A moglibyście pokazać o co chodzi z tym settingsem? bo nie bardzo rozumiem.

Ogólnie na razie zrobiłem to tak, że mam moduł default, który wczytuje szablon. W module tym mam klasę z metodą executeError404. Dodatkowa klasa dziedziczy po sfActions i wykorzystuje nadpisanie metod forward404*

Suma sumarum mam stronę taką jak normalna tylko zamiast treści mam komunikat błędu (jeśli przekazany) lub informację o 404. Wydaje mi się, że gdybym chciał teraz tylko przekierować na główną to wystarczyłby redirect w tej metodzie executeError404. To po co settings.yml ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
eamzeet
post
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 4
Dołączył: 31.03.2010
Skąd: Kraków

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


No tak tylko, że ten moduł: default jest w bebechach symfony i tam musisz to robić.
A możesz sobie ustawić dowolny swój moduł i dowolną swoją akcję przechwytującą wyjątek 404 w pliku settings.yml dając:

error_404_module: myModule
error_404_action: myAction


i tutaj sobie ustawiasz.
No ale ogólnie to wystarczy dać redirect tak jak mówisz w metodzie która przechwytuje wyjątek 404.
Go to the top of the page
+Quote Post
destroyerr
post
Post #7





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


@adalgrim tylko po co robić redirect skoro możesz pokazać 404. Jeśli jednak chcesz główną no to w Twojej akcji obsługującej 404 i daj sobie redirect albo forward. Nie ma co kombinować.

@eamzeet To prawda że ten moduł jest w symfony, ale nie ma problemu żeby nadpisać to w swojej aplikacji.
Go to the top of the page
+Quote Post
adalgrim
post
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.11.2005
Skąd: Zabrze

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


Tak jak napisał destroyerr, ja moduł default nadpisuje w swojej aplikacji i nie ma z tym żadnych problemów.

Czy błąd 404 czy redirect to według mnie kwestia założenia. Nie ma co się kłócić co jest lepsze (IMG:style_emoticons/default/smile.gif)

@eamzeet dzięki za wytłumaczenie settingsa
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: 24.08.2025 - 02:19