jak na odkazy a predavani parametru?

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

Dobry den, poradil by prosim nekdo jak vyresit odkazy?? Vypisuju data za databaze do tabulky a chtel bych odkazovat na homepage s parametrem id=(jedinecne ID kazdeho produktu v tabulce)…

Presenter vypada nasledovne:

<?php
class HomepagePresenter extends BasePresenter {

public function renderDefault() {
//$model = new TestModel;
//$this->template->data = $model->getTest();
$this->template->data = dibi::fetchAll(‚SELECT * FROM [pavel]‘);
}
public $myParameter = ‚defaultValue‘;
}?>

sablona .phtml

<table>
        <tr><th>ID</th><th>Test</th></tr>
        {foreach $data as $row}
        <tr>
                <td>{$row->id}</td>
                <td><a href='{plink Homepage:, 'id' => '$row->$id'}'>{$row->test}</a></td>
        </tr>
        {/foreach}
  </table>

a prave u toho „a href=.....“ mi to nejak nefunguje.. odkazuje me to na:
http://localhost/…row-%3E%24id
coz je samozrejme spatne… jde to resit pomoci plink?? samozrejme se to da vyresit i takto:
<a href=„neco/neco/neco/{$row->id}“>text</a>
ale toto reseni se mi az zas tak nelibi..

dekuji za rady,

Tom

redhead
Člen | 1313
+
0
-

ty uvozovky tam nejsou potreba (ani u id ani $row->id)

{plink Homepage: id => $row->id}

a ještě si měl chybu v odkazování na proměnnou v objektu (špatně: $row->$id; dobře: $row->id)

Editoval redhead (23. 11. 2009 21:06)

Ondřej Mirtes
Člen | 1536
+
0
-

A měl bys asi odkazovat na jiný action, když ten default nemá žádný parametr a slouží k zobrazení celého seznamu položek.

Takže:

public function renderShow($id) {
	//zalozeni modelu
	$this->template->item = $model->getItem($id); //SQL dotaz s 'WHERE id=%i', $id
}

A odkaz stačí uvést ve tvaru {link Homepage:show $id}, případně {link show $id}, pokud odkazuješ ze stejného Presenteru.

Editoval Ondřej Mirtes (23. 11. 2009 21:28)

tomasnikl
Člen | 137
+
0
-

ok dekuji Vam chlapi, jdu se vyspat a zitra na to mrknu ;)