CLI router v strašom projekte

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

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
+
+1
-

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
+
0
-

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
+
+1
-

Č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ám

public 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
+
0
-

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)

Čamo
Člen | 798
+
0
-

Ok tak už som to rozchodil. Je to trápne, ale tá routa mala ísť proste za ten new CLIRouter a už funguje aj bez hocicoho. Asi pôjdem pásť kravy. To bude menej stresujúce…

Editoval Čamo (2. 1. 2015 18:11)

Čamo
Člen | 798
+
0
-

trejjam
:D už som pochopil, čo si myslel tým „tohle vyhoď“

if ($container->parameters['consoleMode']) {

}
else { //<-tohle vyhoď
...

Díky!!!