CLI router v strašom projekte
- Čamo
- Člen | 798
Všetko naj v novom roku a k tomu niečo na zamyslenie:)
Prosím vás netuší niekto prečo mi router v CRONe vypisuje miesto odkazov
iba mriežky href=„#“? Verzia Nette je „2.0.x“
CLI router vyzerá takto:
if ($container->parameters['consoleMode']) {
if (isset($container->parameters['absoluteUrl'])) {
$container->removeService('httpRequest');
$container->addService('httpRequest', function() use ($container) {
$url = new Http\UrlScript($container->parameters['absoluteUrl']);
return new Http\Request($url, array(), array(), array(), array(), array(), 'GET', NULL, NULL);
});
}
$router[] = new CliRouter(array(
'presenter' => 'Cron',
'action' => 'default',
));
} else {
$router[] = new Route('index.php', 'Dashboard:default', Route::ONE_WAY | $secure);
NEON vyzerá cca. takto:
development < common:
parameters:
absoluteUrl: http://localhost/reporter
testUrl: http://localhost/reporter
client: http://localhost/reporter-helpdesk/www
clientDir: "%wwwDir%/../reporter-helpdesk/files/attachments"
console < development:
už som to prepísal aj podľa dokumentácie, ale to nefunguje vôbec. A vyzerá to takto:
if ($container->parameters['consoleMode']) {
//if (isset($container->parameters['absoluteUrl'])) {
$container->removeService('httpRequest');
$container->addService('httpRequest', function() use ($container) {
$uri = new UrlScript;
$uri->scheme = 'http';
$uri->port = Url::$defaultPorts['http'];
$uri->host = 'localhost';
$uri->path = '/';
$uri->canonicalize();
$uri->path = Strings::fixEncoding($uri->path);
$uri->scriptPath = '/';
return new Http\Request($uri, array(), array(), array(), array(), array(), 'GET', null, null);
//$url = new Http\UrlScript($container->parameters['absoluteUrl']);
//return new Http\Request($url, array(), array(), array(), array(), array(), 'GET', NULL, NULL);
});
//}
$router[] = new CliRouter('Default:default');
} else {
ak by niekto tušil v čom to môže byť tak dajte vedieť. Ja som stratený.
- trejjam
- Backer | 65
CliRouter nepoužívám, ale
z Tvé konstrukce RouteListu bych tipoval že nette nenašlo vhodnou routu
zjistíš pomocí tohoto
.
(Tvůj RouteList pro CLI obsahuje pouze CliRouter)
- Čamo
- Člen | 798
trejjam
Díky dobrá rada, nastavil som $invalidLinkMode, ale teraz mi to hádže
error:
An error occurred while executing error-presenter
…no route for Sign:in
a že v basePresentery mám
public function checkRequirements($element)
{
parent::checkRequirements($element);
if (!$this->getUser()->isLoggedIn()) {
$this->redirect('Sign:in');
}
Editoval Čamo (2. 1. 2015 12:43)
- trejjam
- Backer | 65
Čamo napsal(a):
trejjam
Díky dobrá rada, nastavil som $invalidLinkMode, ale teraz mi to hádže error:
An error occurred while executing error-presenter
…no route for Sign:in
a že v basePresentery mámpublic function checkRequirements($element) { parent::checkRequirements($element); if (!$this->getUser()->isLoggedIn()) { $this->redirect('Sign:in'); }
Jak jsem psal minule, když používáš CLI, tvůj routeList nemá ostatní routy, nenastavuješ je díky:
if ($container->parameters['consoleMode']) {
}
else { //<-tohle vyhoď
...
- Čamo
- Člen | 798
To sú ale routy pre normálne http requesty. ConsoleMode je volanie
z príkazového riadku. Aspoň tak som to pochopil.
Pridal som do if vetvy takýto riadok:
$router[] = new Route('hocico/<presenter>/<action>[/<id>]', 'Cron:default');
S tým „hocico“ to začalo fungovať a vygeneruje to
http://host.sk/hocico/Presenter/action.
Ale to hocičo tam nemôže byť. Síce to zodpovedá adresáru v ktorom to mám, ale na produkčnom servery to nemôže byť.
Editoval Čamo (2. 1. 2015 17:26)