contributte/console – jak se dostat ke službám
- webman
- Člen | 15
Prosím o radu.
Jak dostat do contributte/command služby nebo kontejner?
V presenterech se dá dostat ke službám přes
$this->context->getService(), tady ale žádnej context není.
Díval jsem, že se z Command dá dostat k Application přes
$this->getApplication(), ale tam context/kontejner taky není.
Na webu symfony/console je uvedeno, že se to má injectovat přes konstruktor. Ten ale počítá jen s názvem a ani ten se tam reálně nepředává.
Když jsem se pokusil překrýt konstruktor, píše mi to:
Too few arguments to function App\Module\Czruian\Console\ImportaddrsCommand::__construct(), 0 passed
Existuje nějaký jiný způsob, jak se dostat ke kontejneru nebo službám?
<?php
declare(strict_types=1);
namespace App\Module\Data\Console;
use App;
use Tracy;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
set_time_limit(0);
final class ImportdataCommand extends Command
{
protected static $defaultName = 'data:import'; //***** command name
private $T=NULL;
public function __construct(string $name = null, App\Modules\App\Model\Transporter $transporter)
{
$this->T=$transporter;
parent::__construct($name);
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return void
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
//some code
}
}
V configu v services mám:
` -
App\Module\Czruian\Console\ImportdataCommand(„nazev“,@Transporter)`
- jiri.pudil
- Nette Blogger | 1029
$name
předávat nemusíš, je volitelný a pokud ho neuvedeš
ani nenastavíš v metodě configure()
, použije se
$defaultName
. Konstruktor je určitě správná cesta a soudě dle
té chyby bych jako první zkusil smazat cache, CLI se totiž typicky spouští
v produkčním režimu.