Odkazy

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

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
+
0
-

V DefaultPresenteru ti chybí metoda renderTable($id), nebo ji tam máš bez parametru.

Padik
Člen | 11
+
0
-

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
+
0
-

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
+
0
-

Solution napsal(a):
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)“.

tohle presenter by neměl řešit, to už má na starost Routování

Padik
Člen | 11
+
0
-

Router mi zformuje url? Jde jen o to, jak zformovat jejich zápis, jestli to mam natvrdo napsat takto:

<?php
<a href="/{plink $items['seo_url']}" class="name">{$items['nazev']}</a>
?>

Nebo nějakým jiným způsobem.

redhead
Člen | 1313
+
0
-

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
+
0
-

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 :)