![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 |
|
|
![]()
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) |
|
|
![]()
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 ?
|
|
|
![]()
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) |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 02:19 |