Konfigurace menu na stránce

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

Zdravím, dělám stránky s několika menu (vlevo na stránce hlavní navigace, uprostřed nahoře uživatelské odkazy, pod tím drobečková navigace,…)

Vzhledem k tomu, že většina jich je založena na stejném stromu stránek, chci si někde moct to menu nakonfigurovat (pomocí .neon)

Mám 2 dotazy:

  1. patří toto do hlavního config.neon, nebo si mám vytvořit třeba menu.config.neon, do kterého dát jen to menu?
  2. pro oba případy, jak se dá dostat k těm hodnotám z configu? (přistupuju k nim z komponenty)

Předem děkuju za každý názor

Nox
Člen | 378
+
0
-

2. V továrničce předáš přes konstruktor (nebo setter) příslušnou část parametrů (ono menu) komponentě

1. Nejsem si jistý jestli toto vůbec patří do konfigu, i když jako úplně špatně mi to zase nezní, nevim. Jestli to mít v hlavním nebo v jiným, to je hlavně záležitost čitelnosti a nechal bych to na tom, jak to vidíš sám/tvůj tým. Ale osobně mi přijde dobrý nápad dát to zvlášť, když už

ViPEr*CZ*
Člen | 817
+
0
-

Nakonfigurovat menu? Myslíte jako položky menu zapsat do nějakého konfiguráku a pak je vykreslovat v šabloně?

greeny napsal(a):

  1. pro oba případy, jak se dá dostat k těm hodnotám z configu? (přistupuju k nim z komponenty)

Přistupuju k nim z komponenty… tak kde je problém? :-) Ale i kdyby přece, tak tady to by mohlo pomoci: https://doc.nette.org/cs/configuring

greeny
Člen | 405
+
0
-

Možná jsem se nevyjádřil zrovna nejlíp…

Moje představa je takováto:

// config.menu.neon:

menu:
	homepage:
		target: "Homepage:default"
		text: "Hlavní stránka"
...

Z tohoto by se vygenerovalo menu (potřebuju tam hromadu isCurrent pro CSS a rozbalovací menu – nechce se mi to psát všechno ručně)

Mám:

  • v @layout.latte: {control menu}
  • v BasePresenter.php: createComponentMenu(){ … }
  • a teď potřebuju v Menu.php udělat něco jako:
$config=parseConfig('config.menu.neon'); // vrací pole

Jen nevím, jaká na to existuje funkce, jestli nějaká…

// EDIT po projití si odkazu jsem našel Rozšíření pro kontejner , tak snad mi pomůže :D

Editoval greeny (1. 11. 2012 19:42)

ViPEr*CZ*
Člen | 817
+
0
-

Pole se dá udělat takhle pomocí neon:

parameters:
	languages:
		cz: Čeština
		en: Angličtina
		de: Němčina
		fr: Francouzština

Pak v prezenteru přes DI kontejner bude dostupné v poli $this->context->parameters[‚languages‘]
Do komponenty si to musíte předat.