Odkazy
- Padik
- Člen | 11
Zdravím,
pravděpodobně je to ještě má neznalost Nette, ale mám problém
s odkazy.
Zkoušel jsem příklady z quick start(díl „Hezčí šablony“), akorát
místo SQlite, používám MySQL.
<?php
require_once LIBS_DIR . '/dibi/dibi.php';
dibi::connect(array(
'driver' => 'mysql',
'host' => 'localhost',
));
$this->db = dibi::query("Select * FROM menu2 order by poradi ASC");
Klasicky jsem si vybral záznamy z databáze.
public function renderDefault()
{
$this->template->tables = $this->db->fetchAll();
}
A proměnnou tables naplnil daty.
?>
Toto je v pořádku.
<?php
{foreach $pole as $items}
<a href="{plink table $items['seo_url']}" class="name">{$items['nazev']}</a>
{/foreach}
?>
Ale pokud si to takto vypíši, tak ve vlastnosti href se nachází toto:
href="error: Extra parameter for 'Default:table'." class="name">BENEKOV pelling 27</a>
Nevím z jakého důvodu, to píše tuto chybu, je to přesně podle návodu
až na jinou db.
Děkuji předem za vysvětlení.
Editoval Solution (18. 12. 2009 19:01)
- Ondřej Mirtes
- Člen | 1536
V DefaultPresenteru ti chybí metoda renderTable($id), nebo ji tam máš bez parametru.
- Padik
- Člen | 11
Díky za reakci, ale jsem ještě laik v Nette, mohl by si mi to trochu
upřesnit?
Beru zpět.
Přidal jsem metodu renderTable($tables){…}
A ted, dá se v té metodě nastavit „zformování url“, abych místo
„index.php?tables=neco&action=neco“ měl
„index.php/neco(pouze neco)“.
Děkuji
Editoval Solution (18. 12. 2009 19:39)
- redhead
- Člen | 1313
Odkazuješ na action v DefaultPresenteru s názvem table (plink table), a voláš ji navíc s parametrem ($items[‚seo_url‘]). Action se pak volá jako metoda presenteru – actionTable() ale navíc musí mít i ten parametr co posíláš. Čili nějak takhle:
public function actionTable($seo_url) //na tuto metodu s parametrem budeš tím plinkem odkazovat
{
//kod actiony
}
- redhead
- Člen | 1313
Takhle ti to určitě nepojede. Makro plink se tvoří vždy stejně
{plink [[module:]presenter:]action [parametr1, ..]}
toto vytvoří celou url (včetně http://…), aby ti toto makro tvořilo jinou podobu url, tak musíš definovat routy.
Čili zápis si měl poprvé správně:
{plink table $items['seo_url']}
Editoval redhead (18. 12. 2009 20:16)
- Ondřej Mirtes
- Člen | 1536
Ano, v aplikaci seš odstíněn od tvaru URL, abys je všechny mohl ovlivňovat na jednom místě.
Pro naučení se s Nette doporučuju seriál na Zdrojáku :)