Modul pro Cron – CLI – probém s routou
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MW
- Člen | 626
Zdravím a prosím o radu.
Snažím se udělat modul pro Cron přes CLI router:
<?php
namespace App\IkonisModule\Routing;
use Nette\Application\Routers\Route;
use Nette\Application\Routers\RouteList;
final class RouterFactory {
private $container;
public function __construct(\Nette\DI\Container $container) {
$this->container = $container;
}
/**
* @return \Nette\Application\IRouter
*/
public function create() {
$router = new RouteList;
if ($this->container->parameters['consoleMode']) {
$router[] = new \Nette\Application\Routers\CliRouter(array(
'module' => 'Cli',
'presenter' => 'Cli',
'action' => 'cron'
));
} else {
$router[] = new Route('<presenter>/<action>[/<id>]', array(
'module' => 'Ikonis',
'presenter' => 'Login',
'action' => 'default'
));
}
return $router;
}
}
Strukturu mam
app\CliModule
-presenters
-BasePreseter
-CliPresenter
app\IkonisModule
-presenters
-...
BasePresenter:
<?php
namespace CliModule;
use Nette;
abstract class BasePresenter extends Nette\Application\UI\Presenter {
public function startup() {
parent::startup();
if (!$this->context->parameters['consoleMode']) {
throw new \Nette\Security\AuthenticationException;
}
}
}
a CliPresenter:
<?php
namespace CliModule;
class CliPresenter extends BasePresenter {
public function actionCron() {
echo 'FUNGUJU!';
$this->terminate();
}
}
Když na řádce zavolám
php index.php Cli:Cli:cron tak to funguje
pokud jen php index.php tak to hází error 404 ..
Pokud do toho routeru v té podmínce dam např. default:
$router[] = new \Nette\Application\Routers\CliRouter(array(
'module' => 'Ikonis',
'presenter' => 'Login',
'action' => 'default'
));
Tak to také jede.. problém s namespace nebo nevim :/
Netušíte, kde může být problém?
Díky!
- Jan Mikeš
- Člen | 771
Ahoj, sice to neresi tvuj konkretni problem, ale velice doporucuji vyuzit Kdyby\Console s cimz ti odpadnou
uplne starosti o router, presentery, nepekne sahani na
$this->context
v presenteru atd..
Secteno podtrzeno, zbavis se chyby, se kterou se setkavas a navic k tomu vyuzijes skvelou a udrzovanou knihovnu a moderni pristup ;).