Kdyby/Console a spouštění commandů
- Azathoth
- Člen | 495
Nedaří se mi spustit třídu SchemaUpdateCommand z kdyby doctrine console. Třída je jako součást vendora zaregistrovaná v DI, takže jsem si ji injectnul do presenteru
/**
* @SchemaUpdateCommand
* @inject
*/
public $schemaUpdate;
ale když zavolám
$this->schemaUpdate->run($input, $output);
tak to hlásí, že tomu chybí cache a helperset. Musím registrovat nette cache i entitymanager jako helpery nebo dělám špatně něco jiného?
- David Matějka
- Moderator | 6445
injectni si Symfony\Components\Console\Application a zavolej
run
, jako vstup pouzij ArrayInput a jako vystup StringOutput
z kdyby
- David Matějka
- Moderator | 6445
@enumag mozna jsem to spatne pochopil, ale myslim, ze @Azathoth chce nekde v presenteru spustit konkretni command.
Bez parametru to taky spoustim v console.php
, kde se spousti
cela symfony console a ty parametry dodam pres argv a vystup jde do stdout,
respektive stderr
- Filip Procházka
- Moderator | 4668
Taky by možná bylo fajn psát * @var SchemaUpdateCommand
místo * @SchemaUpdateCommand
.
Ale jestli to hackuješ kvůli tomuhle, tak se na to vykašli a raději si tu konzoli oprav.
- Filip Procházka
- Moderator | 4668
@Azathoth Bojím se, že místo řešení příčiny bude každej řešit důsledek a problém obcházet. Raději bych přišel na to kde je problém a opravil ho. Protože mně konzole funguje perfektně na všech projektech. Nechceš se stavit na Nette chat a vyřešit to raději správně?
- akadlec
- Člen | 1326
omg, tak můj problém vyřešen v index.php jsem měl podmínku na nespouštění appky pokud je v consoli ;)
// Run application.
if (!$container->parameters['consoleMode']) {
$container->application->run();
}
E: tak nic, konzole sice jede, ale spouští se defaultní presenter jako by to šlo přes http požadavek :(
Editoval akadlec (23. 12. 2015 11:36)
- Ja
- Člen | 260
@akadlec tady je snippet ode me, toto resi zrovna schema update
<?php
$input = new ArrayInput(array('--force' => true));
$output = new StringOutput();
\Nette\DI\Extensions\InjectExtension::callInjects($this->context, $this->schema_update_command);
$this->schema_update_command->setHelperSet(new HelperSet(['em' => new EntityManagerHelper($this->em)]));
$this->schema_update_command->run($input, $output);
?>