Po vytvorení routu pre menu nefunkčný registračný link

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

Dobrý deň,
potrebujem poradiť s routovaním. Mám projekt rozdelený na admin a front modul aj s registráciou (s Acl autorizáciou) a prihlasovaním. Dorobil som menu, kde položky (pages) si vyťahuje z db, k tomu som prispôsobil routovanie. Všetko funguje v pohode, len po zmene routovania mi už neidú ostatné linky ako napr. registrácia (Register:register), alebo prihlasovanie, písalo chybu no route for HTTP.

Skúsil som do route pridať ďalšie pravidlá:

$router[] = new Route('register/register', 'Front:Register:register');
$router[] = new Route('sign/in', 'Front:Sign:in');

No a teraz mi to vypisuje chybu:
Undefined variable: menu

Môj aktuálny RouteFactory

Menu som vložil do šablóny @layout.latte

<ul class="nav nav-pills">
	<li n:foreach="$menu as $slug => $title">
	{first}<a n:href="this, 'slug' => NULL" n:class="$presenter->linkCurrent ? active">Home</a>{/first}
	{if !$iterator->first}<a n:href="this, 'slug' => $slug" n:class="$presenter->linkCurrent ? active">{$title}</a>{/if}
	</li>
</ul>

Skúsil som teda do RegisterPresenteru injectnut PagesRepository, vytiahnuť z db menu a poslať to do template. Zobrazila sa mi register stránka aj s menu avšak po kliknutí na položku v menu sa to nikam nepresmerovalo (nič to nerobilo).
Skúsil som teda aj pages vytiahnuť z db a poslať do template a potom mi to vyhodilo už ďalšiu chybu:
Invalid argument passed to foreach resp. Nette\Iterators\CachingIterator; array or Traversable expected, NULL given.

Ďakujem za každú radu.

Hafran
Člen | 121
+
0
-

No mě to příjde, že na těch stránkách to menu prostě nejni. Jakože je ta proměnná prázdná (když je NULL given). Takže jestli ho na registraci atd. nepotřebuješ, tak si tam dej nějakou podmínku IFSET nebo si udělej víc šablon ať ho tam nepoužíváš a jestli ho tam potřebuješ, tak si ho tam musíš korektně poslat – možná jde o to, že tu stránku (registration) to v db nenajde a nemáš to správně ošetřený. Pro začátek si dumpni tu proměnnou menu a koukej proč ti to nevrací co chceš. :)

NiNu
Člen | 31
+
0
-

OK, dumpol som premennú menu a tá funguje správne, čiže nesie v sebe dvojice ($slug ⇒ $title), čo je v pohode.
@Hafran mal si pravdu, tú chybu píše preto, že v db v tabuľke pages sa stránka registration nenachádza, pretože ju volám cez Register:register, v tomto prípade som dal premennú page preč keďže potrebujem len menu.
Teraz keď kliknem na link Register, ukáže mi registračný formulár aj s menu, ale linky v menu mi vygeneruje v takomto tvare:

/register/register?slug=home
/register/register?slug=about

Preto som rozmýšľal, či by sa dal vytvoriť router len pre túto špecifickú stránku Register:register, aby mi to generovalo tieto linky ako /home , /about …
Nech sa snažím ako sa snažím, tak takýto router neviem zostaviť, teda ak sa to dá.
Ak to inak nepôjde tak spravím novú šablónu pre register bez menu, ale radšej by som to vyriešil inak.

NiNu
Člen | 31
+
0
-

OK, routom som to bohužiaľ nevyriešil, tak som spravil iný layout (bez menu) pre registráciu a prihlasovanie.
Teraz to už v pohode fičí.