pomoc s CliRouterem, prázdné defaults

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Oggy
Člen | 306
+
0
-

Potřebuji spouštět metody v aplikaci přes CRON, chtěl jsem využít CliRouter, ale nemohu mu nastavit defaults .. jeho routa se mi nikdy nematchne.

kód vypadá nějak takto:

<?php
$container->router = $router = new RouteList;

$return = $router;
//jen na testovani ..ma byt consoleMode
if (!$container->params['productionMode']) {
	$container->application->allowedMethods = FALSE;
        $return[] = new CliRouter(array('action' => 'Front:Homepage:cron'));
} else {
... //klasicke routy
}
?>

zkoušel jsem

<?php
 new CliRouter(array('Front:Homepage:cron'));
?>

nebo

<?php
 new CliRouter(array('presenter'=>'Homepage', 'action'=>'cron'));
?>

nemá s CliRouterem někdo větší zkušenost?

Editoval Oggy (19. 1. 2012 18:23)

Patrik Votoček
Člen | 2221
+
0
-
  1. detekce Console módu pomocí productionMode je blbost. Dej si tam PHP_SAPI == 'cli'
  2. v nejnovějším Nette už $container->application->allowedMethods = FALSE; není potřeba
  3. $return = $router; je blost… proč něco takového vůbec děláš?
  4. chybí ti modul: new CliRouter(array('module'=>'Front','presenter'=>'Homepage', 'action'=>'cron'));
Oggy
Člen | 306
+
0
-

1. detekce samozřejmě pomocí $container->params['consoleMode'] ..jen jsem si to testoval.. to není ten problém
2.OK
3. no je tu jen výřez kódu..v Boostrapu volám metodu Approuter metodu initializa..ve který mám routy.. takže proto ten return..
4. taky jsem samozřejmě zkoušel..ale ani tohle právě nejde

Editoval Oggy (19. 1. 2012 22:14)

Patrik Votoček
Člen | 2221
+
0
-

a když pustíš aplikaci jako php www/index.php Front:Homepage:cron ?

Oggy
Člen | 306
+
0
-

ha.. to funguje..kouzelné .. děkuju moc

Oggy
Člen | 306
+
0
-

Ale zjišťuju, že te Clirouter vlastně nepotřebuju… ono to nevyřešilo problém, ale obešli jsme ho..
Zavolám si jakoukoli metodu..to asi není to pravé ořechové…ale zase kontroluju v ní zda je volána z console…

<?php
  public function actionCron() {
        if (!$this->getContext()->params['consoleMode']) {
            throw new \Nette\Security\AuthenticationException;
        }
        ...
        $this->terminate();
    }
?>
Oggy
Člen | 306
+
0
-

Jsem co se týče práce s cronem v nette aplikaci nováček… mám pár dotazů.

Používáte Clirouter? jak?
Pokud ne .. jak zajistit bezpečnost?