Ignoruje routy jiné než Presenter/Action
- murdej
- Člen | 26
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;
?>
- murdej
- Člen | 26
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
Jestli jsi vyšel ze sandboxu, pravděpodobně tam budeš mít něco takového.
- jiri.pudil
- Nette Blogger | 1029
Ještě hezčí (čistší) bude, když svoje routy přesuneš z bootstrapu do té RouterFactory. Právě proto tam je.