Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][Symfony]CommandConsole wstrzyknięcie doctrine
Forum PHP.pl > Forum > PHP > Frameworki
Matrix12
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()
kpt_lucek
Tutaj a potem tutaj.

Szukanie nie boli
Matrix12
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()
kpt_lucek
$this->getContainer()->get('kernel'); ?
Matrix12
To zwróciło mi bład: $this->getContainer()->get('logger');
thek
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.
Matrix12
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.