Kdyby/Console Quickstart problem
- xan1203
- Člen | 5
Zdravim, predesilam, ze s PHP, Nette, Kdyby/Console zacinam, tak prosim nekamenovat:-). Potreboval bych rozchodit Kdyby/Console pod Nette. Co jsem provedl:
nainstaloval Nette sandbox (dle quickstart pomoci composer)
nainstaloval Kdyby/Console (dle popisu na githubu, pomoci composer require)
zaregistroval extension, url v neon.config
zkusil spustit php index.php, console se spustila, vypsaly se zakladni informace
(usage, options, available commands )
potud ok pote jsem se snazil pridat vlastni command dle quickstartu na
githubu:
vytvoreni SendNewslettersCommand.php
zaregistrovani services sendNewslettersCommand v neon.configu
pri spusteni se vypise do logu nasledujici hlaska:
Nette\DI\ServiceCreationException: Class App\Console\SendNewslettersCommand used
in service ‘sendNewslettersCommand’ not found or is not instantiable in
........./test1/vendor/nette/di/src/DI/ContainerBuilder.php:476 @ CLI: index.php
.......
jinymi slovy danou tridu nelze nalezt. uz se s tim nejakou dobu trapim, googlim, snazim se pochpit jednolive casti jak funguji, ale zatim nic a za kazde nakopnuti spravnym smerem budu rad. predpokladam, ze soubor s commandem neni ulozen na spravne ceste, aby se nasel, ale uz jsem ho zkousel dat vsude mozne a nic :-(
- xan1203
- Člen | 5
V konfigu ho mam zapsan dle navodu na githubu (tedy stejne tak jak pises), tak tam mam. tady bude problem, ze ten command neni nalezeny autoloaderem. otazka tedy je, kam by se mel soubor s commandem spravne ulozit, presneji do jake cesty v pripade, ze namespace je dle githubu „namespace App\Console“ a jak by se mela pripadne upravit konfigurace (ci cokoliv jineho) aby ho autoloader nasel.
- Myiyk
- Člen | 321
@xan1203 Namespace může být jakékoliv.
V souboru app/bootstrap.php
je nastavení robot loaderu.
V základním nastavení se načítá jen složka app
.
Načítání věcí z vendor dělá composer sám. A většinou při instalaci vygeneruje tzv. mapy, kde se co nachází. Takže pokud přidáš třídu do vendor, composer ji nenajde.
Editoval Myiyk (2. 1. 2016 9:44)
- F.Vesely
- Člen | 369
- Stahnu Nette\Sandbox
composer create-project nette/sandbox test
- Stahnu Kdyby\Console
composer require kdyby/console
- Do app/command/TestCommand.php napisu
<?php
namespace App\Console;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class TestCommand extends Command
{
protected function configure()
{
$this->setName('app:test');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeLn('Test Command');
return 0;
}
}
- Extension a TestCommand zaregistruji v config.neon
extensions:
console: Kdyby\Console\DI\ConsoleExtension
console:
commands:
- App\Console\TestCommand
- Spustim TestCommand pres CLI
php www/index.php app:test