Předání parametru metodě z view

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

Ahoj
S nette sem začal 2 dny na zpátek a zasekl sem se u asi poměrně triviální věci. Snažím se vypsat z databáze nějaký údaje, pokud zadefinuju dotaz na databázi napřímo, tak to funguje bez problému, ale kdž chci ID předat pomocí parametru metody, tak sem v koncích.

public function renderDefault($_id) {
	$this->template->data = $this->db_connection->table('user')->where('id = ?', $_id);
}
<div n:foreach="$data as $item">
	{$item->name, 1}
</div>

Uměl by ste mi někdo říct jak předat metodě $_id? Nebo jinej korektní způsob jak vypsat údaje z DB?

Oli
Člen | 1215
+
0
-

Ahoj, predavas to dobre. Nevim co tam ma znamenat ta 1, ale jinak by to melo fungovat bez ty 1.

Pokud chces jen jeden zaznam z db, tak na konec dotazu dej ->fetch(). Potom v sablone nebude ten foreach, ale rovnou data z databaze.

Jerry
Člen | 9
+
0
-

Ta jednička nevím jak se mi tam dostala :D De o to že když to takhle spustím tak mi laděnka vyhodí „Column operator does not accept NULL argument.“ Proto by mě zajímalo celkově jak předat právě té metodě renderDefault ten vstupní argument $_id. Mám ho předávat pomocí url, či? Pokud totiž spustím

public function renderDefault() {
   $this->template->data = $this->db_connection->table('user')->where('id = 1');
}

Tak mi to normálně vypíše záznam s id 1

David Matějka
Moderator | 6445
+
0
-

Projdi si quickstart, tam jsou tyhle zaklady vysvetleny

CZechBoY
Člen | 3608
+
+1
-

Presenter

public function actionDefault ($id)
{
    $this->template->data = $this->db_connection->table('user')->where('id = ?', $id);
}

Pak na to odkážeš z Latte

<a href="{plink Presenter:, id => 99}">odkaz na Presenter, akce default </a>

Editoval CZechBoY (25. 10. 2015 12:00)

Šaman
Člen | 2666
+
+4
-

V presenterech je best practise tohle:

<a n:href="Presenter:default, 1">…</a> <!-- 1 je předávaná proměnná do metody renderDefault($id) -->

A propo nedoporučuji používat proměnné s podtržítkem na začátku. Několik jich používá framework abstraktních předcích kompoment a presenterů ($_control, $_presenter). Beru to tak, že proměnné s podtržítkem má vyhrazený framefork.

Editoval Šaman (25. 10. 2015 14:50)

Jerry
Člen | 9
+
0
-

Díky za odpovědi, pomohli :-). To podtržítko je u mě síla zvyku z C++, pokusím se tomu v tomhle případě vyvarovat.

Václav Kraus
Člen | 77
+
0
-

Šaman napsal(a):

V presenterech je best practise tohle:

<a n:href="Presenter:default, 1">…</a> <!-- 1 je předávaná proměnná do metody renderDefault($id) -->

A propo nedoporučuji používat proměnné s podtržítkem na začátku. Několik jich používá framework abstraktních předcích kompoment a presenterů ($_control, $_presenter). Beru to tak, že proměnné s podtržítkem má vyhrazený framefork.

Asi by bylo super to mít v dokumentaci. Ale vůbec netuším, kam to dát (jestli to už teda někde není, ale nenašel jsem). Možná sem https://doc.nette.org/cs/glossary ?

Šaman
Člen | 2666
+
+1
-

Václav Kraus napsal(a):

Šaman napsal(a):

A propo nedoporučuji používat proměnné s podtržítkem na začátku. Několik jich používá framework abstraktních předcích kompoment a presenterů ($_control, $_presenter). Beru to tak, že proměnné s podtržítkem má vyhrazený framefork.

Asi by bylo super to mít v dokumentaci. Ale vůbec netuším, kam to dát (jestli to už teda někde není, ale nenašel jsem). Možná sem https://doc.nette.org/cs/glossary ?

Ono těch properties frameworku je jen pár a to moje doporučení není nijak oficiální. Resp. co na to @DavidGrudl? Ale pro jistotu takové property nepoužívám.

P.S. Jde opravdu jen property, tedy členské proměnné. Obyčejné proměnné se s tím tlouct nebudou. Takže v tomto případě to byl spíš můj nezvyk, který mě praštil přes oči.

Editoval Šaman (25. 10. 2015 17:14)