Ako vytvárať linky v CLI?
- erzzo
- Člen | 49
Zdravím, postupoval som podľa tohto návodu
https://pla.nette.org/cs/routovani-v-cli
V bootstrape si vytváram httpRequest:
if ($container->params['consoleMode']) {
$container->removeService('httpRequest');
$container->addService('httpRequest', function() {
$uri = new UrlScript;
$uri->scheme = 'http';
$uri->port = 80;
$uri->host = 'localhost';
$uri->path = '/fleetlog/www/';
$uri->canonicalize();
$uri->path = Strings::fixEncoding($uri->path);
$uri->scriptPath = '/';
return new Http\Request($uri, array(), array(), array(), array(), array(), 'GET', null, null);
});
$container->application->allowedMethods = FALSE;
$container->router[] = new CliRouter(array('action' => 'Reminders:default'));
} else {
V command line potom volám action:
php5 www/index.php Reminders:CheckRemindersStatus
a action v RemindersPresentery vyzerá takto:
public function actionCheckRemindersStatus()
{
echo $this->link("//:Main:Sign:in");
....
$this->terminate();
}
Lenže echo vracia stále len odkaz #
Keď si vypíšem servis httpRequest, všetko je tak nastavené ako v bootstrape.
Vedel by mi niekto s tým pomocť ? už mi to dlhšie robí problémy. Dakujem
- David Matějka
- Moderator | 6445
a v ne-cli modu se ti ten odkaz vytvori? zkus si pro cli rucne zapnout debug mod, pripadne zapni prisnejsi mod pro nevalidni linky – sem nastav treba https://api.nette.org/…ter.php.html#45 a ono ti to rekne, co to bylo za chybu
nebo mrkni na kdyby/console ktere resi CLI :)
- Filip Procházka
- Moderator | 4668
To je jednoduché, stačí použít kdyby/console,
ale ta nepoužívá presentery nýbrž Command
classy. Všechno je výborně vysvětleno v Symfony dokumentaci.
- erzzo
- Člen | 49
Filip Procházka napsal(a):
To je jednoduché, stačí použít kdyby/console, ale ta nepoužívá presentery nýbrž
Command
classy. Všechno je výborně vysvětleno v Symfony dokumentaci.
Tak dnes som sa už k tomu konečne dostal, kdyby konzola funguje, ale ako tam mám potom generovať tie linky (aby som ich potom mohol vyvolávať v šablone emailu)?
Priklad:
$this->link("//:Main:Sign:in");
Editoval erzzo (13. 1. 2014 13:27)
- Filip Procházka
- Moderator | 4668
Dejme tomu že jsi v Command classe
protected function execute(InputInterface $input, OutputInterface $output)
{
// helper container zpřístupňuje DI container
$app = $this->getHelper('container')
// tato metoda mi vrátí service konkrétního typu
->getByType('Nette\Application\Application');
// z aplication si vytáhnu presenter
$presenter = $app->getPresenter();
// vygeneruju odkaz
$output->writeLn($presenter->link('//:Main:Sign:in'));
return 0;
}
- Filip Procházka
- Moderator | 4668
A máš dobře routování? Na když dáš generovat stejný link z webu vygeneruje to správný?
- David Matějka
- Moderator | 6445
@Filip Procházka: nemel bys v https://github.com/…tFactory.php v setFakeRequestUrl nastavovat scriptPath?
Editoval matej21 (15. 1. 2014 0:29)