Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][Symfony]CommandConsole wstrzyknięcie doctrine
Matrix12
post 18.10.2015, 15:38:47
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

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


Chce zrobić cron task przy użyciu symfony, symfony ma odpytać odpowiednie API pobrać dane i zapisać je do bazy.. Problem w tym, że nie mogłem wstrzyknąć doctrine do mojego kodu więc wpadłem na pomysł że mogę zrobić osobny serwis do którego wstrzyknę. Zrobiłem sobie na szybko CronTaskService wrzuciłem do niego konstruktor by sprawdzić czy działa.



W CommandConsole mam taki kodzik:



  1. <?php
  2.  
  3.  
  4. namespace Acme\Console\Command;
  5.  
  6.  
  7. use Symfony\Component\Console\Input\InputArgument;
  8. use Symfony\Component\Console\Input\InputInterface;
  9. use Symfony\Component\Console\Input\InputOption;
  10. use Symfony\Component\Console\Output\OutputInterface;
  11. use Symfony\Component\Console\Command\Command;
  12.  
  13. class CronCommand extends Command
  14. {
  15. protected function configure()
  16. {
  17. $this
  18. ->setName('fetch:new')
  19. ->setDescription('Fetch new products')
  20. ;
  21.  
  22. }
  23.  
  24. /**
  25.   * @param InputInterface $input
  26.   * @param OutputInterface $output
  27.   */
  28. protected function execute(InputInterface $input, OutputInterface $output)
  29. {
  30.  
  31.  
  32. $service = new CronTaskProduct;
  33. $s = $service->init();
  34.  
  35.  
  36. $output->writeln($s);
  37.  
  38. }
  39.  
  40.  
  41. }




I jest problem bo pluję się że w do seriwsu nie jest wstrzyknięty doctrine. Macie jakies pomysły jak to rozwiązać?

Dodam że przy korzystaniu z ContainerAwareCommand wywali mi to : PHP Fatal error: Call to undefined method Symfony\Component\Console\Application::getKernel()
Go to the top of the page
+Quote Post
kpt_lucek
post 18.10.2015, 16:43:15
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Tutaj a potem tutaj.

Szukanie nie boli


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Matrix12
post 18.10.2015, 17:44:23
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

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


Czytanie też nie boli, napisałem że wywali mi że nie ma metody getKernel.. a powinna ona się znajdować w ContainerAwareCommand
PHP Fatal error: Call to undefined method Symfony\Component\Console\Application::getKernel()
Go to the top of the page
+Quote Post
kpt_lucek
post 18.10.2015, 18:59:31
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


$this->getContainer()->get('kernel'); ?


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Matrix12
post 18.10.2015, 19:09:25
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

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


To zwróciło mi bład: $this->getContainer()->get('logger');
Go to the top of the page
+Quote Post
thek
post 18.10.2015, 20:21:57
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Bo logger też jest servicem o ile dobrze kojarzę i też musi być wstrzykiwany. Czasem zresztą trzeba się przyjrzeć, bo niekoniecznie wszystko wstrzykuje się przez konstruktor, ale jako dodatkowe wywołanie odpowiedniego settera, już po wywołaniu konstruktora.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Matrix12
post 19.10.2015, 16:44:33
Post #7





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

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


Okej czyli z tego console command mam zrobić serwis do którego wstrzynke logger? Bo według dokumentacji powinno pójść tym co ja napisałem ale widocznie dokumentacja słabo to opisuje.
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: 16.04.2024 - 13:08