Nette Framework – Routovani

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

Zdravim :-)
Mam mensie problemy so smerovanim stranok. Teda ked dam do bootstrapu

<?php
$container = $configurator->createContainer();
$container->router[] = new Route('uvodna_stranka', 'Homepage:default');
?>

, tak by o malo vypisat „....../www/uvodna_stranka“ namiesto „....../www/“ ale nenapise … any idea? :-)

Editoval Takeshi (14. 12. 2012 16:30)

MartinitCZ
Člen | 580
+
0
-

V tomto odstavci to je, stačí si to pořádně přečíct.
https://doc.nette.org/…tion/routing#…

Takeshi
Člen | 596
+
0
-

No to je pekne ale z tohoto materialu to neviem zistit. V starom Nette to bolo kapanek inak. Pred tym som nemal ziaden problem ohladne tohoto.

vvoody
Člen | 910
+
0
-

Aké máš dalšie Routy? Ich poradie? Podla debug baru sa ktorá routa použila?

Takeshi
Člen | 596
+
0
-

Tu je cely boodstrap.php …

<?php
<?php

// Load Nette Framework or autoloader generated by Composer
require __DIR__ . '/../libs/autoload.php';
use Nette\Application\Routers\Route;


$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode(TRUE);
$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); // none section

$container = $configurator->createContainer();

$router = $container->router;
$router = new Route('aaaaa', 'Homepage:default');

return $container;
?>

… riadky

<?php
$router = $container->router;
$router = new Route('aaaaa', 'Homepage:default');
?>

OR

<?php
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('uvodna_stranka', 'Homepage:default');
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
?>

som tam pridal zo stareho Bootstrap-u

⇒ skusal som oba sposoby

… + info: je tam zatial iba jeden presenter a k nemu iba default.latte

Editoval Takeshi (15. 12. 2012 0:38)

vvoody
Člen | 910
+
0
-

Takeshi napsal(a):

<?php
$router = $container->router;
$router = new Route('aaaaa', 'Homepage:default');
?>

Toto je úplná somarina, poriadne sa na to pozri… vložíš niečo do premennej a potom to prepíšeš novým objektom ktorý nieje nijako spojený so zvyškom aplikácie.

<?php
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('uvodna_stranka', 'Homepage:default');
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
?>

Toto už dáva trochu zmysel. Pozri sa do toho debug baru ako som už písal, zistíš že router obsahuje aj iné routy, okrem tých ktoré si napísal do bootstrapu a zistíš aj to, že tvoje routy sa k slovu ani nedostanú. Ten debug bar tam k niečomu je, tak ho používaj a pozri si aké služby sú v konfigu aktuálneho sanboxu.

Takeshi
Člen | 596
+
0
-

Tak v poradi:

index.php
<presenter>/<action>[/<id>]
index.php
uvodna_stranka
<presenter>/<action>[/<id>]

… ten debug bar som naozaj nepouzival, uznavam. Ale na druhej strane … tie tri riadky, ktore ti davali zmysel som vlozil zo stareho projektu a tam mi to funguje skvele … (bootstrap zo starsieho Nette) …

vvoody
Člen | 910
+
0
-

V starom je router definovaný v bootstrape, v novom je v sluzbe. V starom si nahradil router svojim, teraz v novom si existujúci router len doplnil o daľšie routy, preto ti to nefunguje.

Takeshi
Člen | 596
+
0
-

Jasnéééééé… však tam je rovno na to priečinok na routovanie :-) Dik