Vytvoření menu z pole s vlastní proměnnou v odkazu
- Rellik
- Člen | 104
Zdravím, pokouším se udělat takové malé fórum (nebude nikde na ostro, je to spíš takové seznámení s nette) a abych nemusel psát všechny odkazy, tak sem to chtěl vytvořit pomocí pole a foreach. To by mi celkem šlo, ale mám problém dostat do url další parametr.
Mám to zatím tak:
BasePresenter:
public function beforeRender() {
// menu pro diskuzi
$this->template->menuBook = array(
'PHP' => 'Book:php', // potřeboval bych z toho nějak udělat Book: set=>php
'CSS' => 'Book:css', //...
'HTML' => 'Book:html',
'Mimo téma' => 'Book:ot',
);
//...
Šablona:
<ul n:inner-foreach="$menuBook as $item => $link">
<li><a n:href="$item">{$item}</a></li>
</ul>
Tohle mi vygeneruje odkazy : ?action=php&presenter=Book
Já bych ale chtěl aby místo toho actionu byla nějaká moje proměnná
třeba ?set=php&presenter=Book
Jinak používám SimpleRouter, jestli to s tím nějak souvisí…
Možná je to celé špatně, ale nějak se začít musí… :)
Poradí někdo? Díky :)
- pawouk
- Člen | 172
Moc rad bych ti poradil, ale fakt nechapu o co ti jde. Kazdopadne bych se moc nesoustredil na to co je v url (to resi nette), to muzes kdykoliv zmenit pomoci slozitejsich rout, takze spis popis problem z hlediska co to ma delat. Jinak kazdy odkaz musi vzdy odkazovat na presenter + akci, tato dvojice je proste nutna pro spravne fungovani.
- hAssassin
- Člen | 293
ja to asi celkem chapu, ale tam je problem ten, ze ty mas v retezci
(v poli) ulozeny cely n:href
atribut a to nejen
Presenter:action
ale i s parametry a to si nejsem jisty jestli
jde. Jako ze mas:
Presenter:
public function beforeRender() {
$this->template->foo = "Presenter:action foo => bar";
}
Sablona:
<a n:href="$foo">Foo</a>
Mozna bych to zkusil pres makro {link}
, ale nevim:
<a href="{link $foo}">Foo</a>
EDIT: moment, ted sem si vsimnul, ze to tam mas blbe, vzdyt ty v tom foreach
vypisujes dvakrat $item
a to jak v n:href tak i uvnitr tagu
A
. Cili ono ti to do href vypise PHP apod. Neni nahodou v tom
zakopany pes, nebo ses jen cabnul pri prepisovani?
Editoval hAssassin (6. 1. 2012 1:10)
- Tomáš Votruba
- Moderator | 1114
Pokud potřebuješ vypsat odkazy na jednotlivé kategorie, jdeš na to celkem
dobře. action
místo php
neřeš, usnadní ti to
pochopení zbytku Nette.
Takto vypadá čistá cesta – presenter:
public function beforeRender() {
// kategorie
$this->template->categories = array(
'php' => 'PHP', // obvykle $key => $value
'css' => 'CSS',
'html' => 'HTML',
'ot' => 'Mimo téma'
);
// ...
}
Šablona:
<ul n:inner-foreach="$categories as $key => $value">
<li><a n:href="Book:default set => $key">{$value}</a></li>
</ul>
Výsledné html:
<ul>
<li><a href="book/?set=php">PHP</a></li>
...
</ul>
Jinak vřele doporučuji složku examples přímo v distribuci https://github.com/nette/examples