Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF2][SF] Wywoływanie metody bundla przy każdej odsłonie
pegaz1988
post 25.02.2015, 14:57:05
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 24.07.2014

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


Tytuł topica jest bardzo treściwy. Chcę to zrobić w sposób najbardziej elastyczny, jak tylko się da.
Chcę, aby konkretna metoda konkretnego bundla była uruchamiana przy każdej odsłonie.
Nie chcę tego robić w sposób łopatologiczny. Wolę to zrobić porządznie, wykrzystując mechanizmy Symfony.

Czy ma ktoś jakiś pomysł?
Znalazłem komponent: event_dispatcher - czy mam iść w tym kierunku?
Czy mógłbym prosić o prosty kod?
Go to the top of the page
+Quote Post
destroyerr
post 25.02.2015, 15:29:08
Post #2





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

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


Tak, masz iść w tym kierunku. Prosty kod znajdziesz w dokumentacji, zwłaszcza w cookbooku.
Go to the top of the page
+Quote Post
pegaz1988
post 25.02.2015, 16:18:01
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 24.07.2014

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


Czy możesz mi podać linka?
Specyfikacja jest bardzo długa, jestem dopiero po przeczytaniu kilku artykułów, a akurat tego teraz potrzebuję smile.gif
Go to the top of the page
+Quote Post
destroyerr
post 25.02.2015, 20:33:16
Post #4





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

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


Np. http://symfony.com/doc/current/cookbook/se...t_listener.html i wyszukanie tego nie stanowi żadnego problemu.

Ten post edytował destroyerr 25.02.2015, 20:33:47
Go to the top of the page
+Quote Post
pegaz1988
post 26.02.2015, 08:35:51
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 24.07.2014

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


Stworzyłem dwa pliki, dodałem linijki kodu do services.yml, usunąłem cache, ale nie wywołuje się akcja.

  1. <?
  2.  
  3. class AcmeRequestListener
  4. {
  5. public function onKernelRequest(GetResponseEvent $event)
  6. {
  7. if (!$event->isMasterRequest()) {
  8. // don't do anything if it's not the master request
  9. die('działa 1');
  10. return;
  11. }
  12. die('działa 2');
  13.  
  14.  
  15. // ...
  16. }
  17. }


Mimo takiego kodu, nie pojawia się tekst zadeklarowany w jej wnętrzu.
Chcę, aby jedna metoda uruchamiała się sama przy każdym odświeżeniu.

Ten post edytował pegaz1988 26.02.2015, 08:36:05
Go to the top of the page
+Quote Post
Crozin
post 26.02.2015, 09:05:42
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pokaż jeszcze jak podpiąłeś tę klasę w services.yml.
Go to the top of the page
+Quote Post
pegaz1988
post 26.02.2015, 11:11:44
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 24.07.2014

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


Kod
kernel.listener.your_listener_name:
        class: AntiBotBundle\EventListener\AcmeExceptionListener
        tags:
            - { name: kernel.event_listener, event: kernel.exception, method: onKernelException }


Bundle istnieje, klasa i pliki również

Ten post edytował pegaz1988 26.02.2015, 11:11:58
Go to the top of the page
+Quote Post
ikssde
post 26.02.2015, 11:19:06
Post #8





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


Klasa, którą pokazałeś wcześniej nazywa się AcmeRequestListener, natomiast ta w services.yml AcmeExceptionListener. Poza tym chcesz, żeby twoja metoda się wykonała za każdym uruchomieniem, a nie na kernel.exception, więc zastąp to kernel.request.

Tutaj masz wszystkie możliwe eventy dotyczące kernela.

Ten post edytował ikssde 26.02.2015, 11:22:38
Go to the top of the page
+Quote Post
pegaz1988
post 26.02.2015, 11:41:35
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 24.07.2014

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


świetnie, teraz działa; zmylił mnie podany przykład w specyfikacji;
Symfony to taki kombajn, że chyba po roku ciężkiej pracy coś mi się uda w nim porządnego zrobić smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 11:13