Ignoruje routy jiné než Presenter/Action

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

Mám problém s routování,

chci abych mohl použít adresu ve tvaru
example.com/clanek/id
nastavení route mám takto:

$container->router[] = new Route('clanek/<id>', 'Homepage:article');
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Odkazy generuji:

<a n:href="Homepage:article, $id">...

Ale generuje se mi /Homepage/article/id. Pokud v prohlížeči zadám /clanek/id přesměruje se na /Homepage/article/id. Asi to bude nějaká blbost ale nemůžu na to přijít.
Používám nette 2.0.8 released on 2013–01–01.
Projistotu ještě celý bootstrap

<?php

use Nette\Application\Routers\Route;

// Load Nette Framework or autoloader generated by Composer
require __DIR__ . '/../libs/autoload.php';


$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
$configurator->enableDebugger(__DIR__ . '/../log');

// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->addDirectory(__DIR__ . '/../libs')
	->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon', $configurator::NONE);
$container = $configurator->createContainer();

$container->router[] = new Route('clanek/<id>', 'Homepage:article');
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

return $container;

?>
Majkl578
Moderator | 1364
+
0
-

Zajímavé.
Určitě se parametr v presenteru Homepage u akce/pohledu article jmenuje id?
Pokud tu druhou (obecnou) routu smažeš, funguje to?

hrach
Člen | 1838
+
0
-

Jen podotknu, ze obcas se setkam s hloupym cachovanim redirectu ve Firefoxu, … takze sem se tuhle pul hodiny vztekal, proc mi nejede routovani…

murdej
Člen | 26
+
0
-

Zkusil jsem ji smazat, nepomohlo.
Asi jsem našel příčinu, nevím proč ale nějakým způsobem se mi do routovaci tabulky dostávají nějaké výchozí routy. Ty první dvě jsout tam „atomaticky“ ty další z bootstrapu

Matched? Class Mask
no Route index.php
yes Route <presenter>/<action>[/<id>]
no Route clanek/<id>
may Route <presenter>/<action>[/<id>]

edit

prozatim jsem to fixnul timto:

$container->router[0] = new Route('clanek/<id>', 'Homepage:article');
$container->router[1] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Editoval murdej (11. 3. 2013 9:10)

jiri.pudil
Nette Blogger | 1029
+
0
-

Jestli jsi vyšel ze sandboxu, pravděpodobně tam budeš mít něco takového.

murdej
Člen | 26
+
0
-

To je ono, zakomentoval jsem v config.neon tyto radky a uz funguje

		#routerFactory: RouterFactory
		#router: @routerFactory::createRouter
jiri.pudil
Nette Blogger | 1029
+
0
-

Ještě hezčí (čistší) bude, když svoje routy přesuneš z bootstrapu do té RouterFactory. Právě proto tam je.