![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Potrzebuję listę nazw, które można wykożystać do DI w Symfony2. Nie wiecie gdzie można takową znaleźć?
Chodzi mi o pobranie instancji klasy poprzez $this->get('class');. |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Możesz jakoś rozwinąć bo to co napisałeś... nie ma zbyt dużego sensu. Czyżby chodziło Ci o listę wszystkich dostępnych w danym czasie usług w DIC-u? Symfony\Component\DependencyInjection\Container::getServiceIds().
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%)
|
Lub komenda container:debug
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Tak, dokładnie o to - dziękuję. Po prostu nie wiedziałem jak to napisać.
Kurcze, nie chce tworzyć nowego wątku i pośrednio ten wątek założyłem aby samemu odszukac informacje ale nie znalazłem tego co chciałęm. Może mi ktoś powiedzieć czy jest możliwość w SF2 sprawdzenia, czy dany adres istnieje? Po prostu chciałbym w danym momencie w kodzie sprawdzać czy adres istnieje i robić "coś" innego niż to co się dzieje normalnie (E404). EDIT: Znalazłem coś w tej klasie, ale nie wiem czy to jest do tego i dlatego chciałem się dowiedzieć jak się do niej dostać poprzed DIC: Symfony\Component\Routing\Matcher\UrlMatcher::match() Ten post edytował adbacz 6.02.2012, 22:02:13 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Chodzi o to, że przykładowo otrzymujesz skądś jakiś adres URL, przykładowo http://example.org/path/123/some-title.html i chciałbyś sprawdzić czy jest to poprawny adres w obrębie Twojej strony?
Teraz pytanie czy to ma sprawdzać czy to jest poprawny format, tj. czy na stronie jest zdefiniowana jakaś tam reguła routingu /path/{ID}/{TITLE}.html czy może czy jest to i poprawny format i faktycznie istniejąca podstrona? |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Załóżmy, że to strona na którą ktoś jest przekierowywany z mojej strony (powiedzmy po zalogowaniu się): http://example.org/article/title-123 i ta strona jest w moim projekcie (?). Jak sprawdzić czy ścieżka (/article/{name}-{id}) istnieje? W sensie, żeby nie pokazywało mi domyślnie błędu 404. Mam nadzieje, że dobrze się wyraziłem.
Nie chodzi o format (.html), ani o to czy, jak w tym przypadku, artykuł na takiej stronie istnieje, po prostu czy jest to ścieżka odpowiadająca zdefiniowanemu routingowi w SF. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
No to w takim razie $container->get('router')->match('URL'); powinno załatwić sprawę. Metoda match() Routera wewnętrznie korzysta z wspomnianego przez Ciebie Symfony\Component\Routing\Matcher\UrlMatcher::match() .
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Dzięki Ci wielkie Crozin, o to mi właśnie chodziło. Teraz tylko zastanawiam się, co zrobić, żeby nie pokazywało błędu, gdy route nie istnieje ;/
Kurde, jak nie jeden problem to następny. Przesyłając do tej metody ścieżkę / zwraca mi ładnie tablicę z kontrollerem i route-m, ale jak podam coś, co nie istnieje dostaję błąd 500 i żadnego powiadomienia z tegoż ResourceNotFoundException, które jest wysyłane jako E500. Można coś z tym zrobić? Jakoś wygłuszyć to, żeby zwróciło jakąś inną wiadomość niż exception? Mógłbym dopisać tam do tej metody coś, ale nie chcę grzebać w oryginalnych plikach, wolę poszukać jakiegoś rozwiązania. Ten post edytował adbacz 6.02.2012, 23:12:07 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Tak się składa, że ta funkcja nie ma bloku try() catch() a takie cosik:
Ale coś pomyślę nad tym. Dziękuję za wszelką pomoc Crozin. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
@ano: Powinieneś łapać jedynie dwa wyjątki wspomniane w dokumentacji, tj. MethodNotAllowedException oraz ResourceNotFoundException. Łapianie wszystkich wyjątków jest tutaj błędem.
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Przepraszam, źle zrozumiałem Crozina ;/ Zrozumiałem, że w tej metodzie mam zmienić a nie objąć już wywołanie tej metody blokiem. Mój błąd.
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
@ano: Powinieneś łapać jedynie dwa wyjątki wspomniane w dokumentacji, tj. MethodNotAllowedException oraz ResourceNotFoundException. Łapianie wszystkich wyjątków jest tutaj błędem. Crozin, nie patrzylem do dokumentacji więc nie mam pojęcia jakie wyjątki może wyrzucić ta metoda. Jednak założyłem, że wszystkie dziedziczą po \Exception, więc dla bezpieczeństwa adbacza tak właśnie napisałem. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Dla bezpieczeństwa? Możesz to rozwinąć? O co Ci chodzi dokładnie ano?
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Rozumiem, że mogłeś nie patrzeć do dokumentacji na potrzebny tego postu, ale w normalnym kodzie pod żadnym pozorem tego \Exception nie powinno tam być. Jedynie dwa wspomniane wcześniej wyjątki oznaczają nieistnienie reguły routingu, a co jeśli pojawił by się jakiś inny wyjątek?
Czym mógłby być spowodowany taki nieprzewidziany wyjątek? Mógłby on zostać wyrzucony przez nasz własną implementację UrlMatchera, która mogłaby korzystać przykładowo z bazy danych i na skutek zerwania połączenia wyrzucić wyjątek. Pojawienie się takiego wyjątku powinno skutkować wywaleniem całej aplikacji (w takiej sytuacji raczej nie wiele dałoby się zrobić), jednak w przypadku kodu podanego przez Ciebie zostanie to błędnie zinterpretowane jako nieistnienie danej reguły - co jest oczywiście błędne. Dlatego też właśnie dla bezpieczeństwa nie powinno być tam \Exception. Swoją drogą tutaj ewidentnie język sam w sobie daje ciała nie wprowadzając mechanizmu wymuszającego obsłużenie wyjątków (pomijając wyjątki czasu działania - ang. runtime). |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
crozin, doskonale to rozumiem. Napisałem tam \Exception, tylko dlatego, że @adbacz napisał ten o to post:
Tak się składa, że ta funkcja nie ma bloku try() catch() a takie cosik:
Ale coś pomyślę nad tym. Dziękuję za wszelką pomoc Crozin. który mnie przeraził, więc nie sądziłem, że warto JESZCZE wchodzić w szczegóły wyjątków... (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Cytat który mnie przeraził, więc nie sądziłem, że warto JESZCZE wchodzić w szczegóły wyjątków... Oj tam, oj tam. Po prostu czytanie ze zrozumieniem troszkę u mnie kuleje ostatnio - źle przeczytałem i zrozumiałem pos Crozina. Koniec OffTopu. Dziękuję za pomoc Panowie. |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 20:22 |