Jak na jednoduchou zmenu obsahu ajaxem v nette?

Kastan
Člen | 4
+
0
-

Je nekde nejaka ukazka jednoducheho ajaxu? Mám na mysli něco ve stylu po zmáčknutí buttonu se do divu vypíše obsah databáze. Vím jak toho dosáhnout normálním Jquery a php ale v nette si vůbec nevím rady.
Mohl by mi to někdo vysětlit na krátké ukázce?

Matey
Člen | 142
+
+1
-

Úplný základ, dosiahneš tým to čo potrebuješ.
https://doc.nette.org/…ication/ajax

Kastan
Člen | 4
+
0
-

Díky tohle přesně jsem měl na mysli jen mám 2 nejasnosti.
V <a n:href="changeVariable!" class="ajax">Change variable!</a> ten vykřičník za href má nějakou funkci?
A kdybych chtěl s timhle ajax dotazem poslat treba id tak bych to měl dát za changeVariable! ?
A funkci upravit na handleChangeVariable (&id) například.

Ondřej Kubíček
Člen | 494
+
+1
-

tím vykřičníkem řekneš, že se spustí handle* metoda

jo, dáš to za to n:href="changeVariable!, 1"

tu metodu bez reference handleChangeVariable($id)

Editoval Ondřej Kubíček (6. 7. 2018 21:32)

Kastan
Člen | 4
+
0
-

Jak mám přes ajax vypsat pole? Píše mi to chybu Invalid argument supplied for foreach()
v presenteru mám

` if ($this->isAjax()) {
$this->anyVariable = $this->database->table('odkazy')->where('vlastnik',$id);
$this->redrawControl('ajaxChange');} `

v db mám 2 položky které mají vlastni=1 a ty se snažím vypsat
v default.latte mám pak tohle na vypsání

´{snippet ajaxChange}
    {foreach $anyVariable as $pole}
    	{$pole->odkaz}
    {/foreach}
{/snippet}´

Tracy mi pak hlásí chybu Invalid argument supplied for foreach() ale když ji vypnu tak se normálně vypisuje, neví někdo o co jde?

Editoval Kastan (7. 7. 2018 13:34)

rkor
Člen | 62
+
0
-

A co máš před spuštěním AJAX požadavku v proměnné $anyVariable?

duke
Člen | 650
+
0
-

Kastan napsal:

Tracy mi pak hlásí chybu Invalid argument supplied for foreach() ale když ji vypnu tak se normálně vypisuje, neví někdo o co jde?

Jde o to, že v $anyVariable nemáš pole ani iterátor, nýbrž instanci třídy Nette\Database\Table\Selection.
Chceš-li pole řádků, je třeba po volání metody where() volat ještě metodu fetchAll() nebo fetchPairs().

A seznam se s tím, jak v tomto fóru formátovat kód.

Editoval duke (7. 7. 2018 14:38)

rkor
Člen | 62
+
0
-

duke napsal(a):
Jde o to, že v $anyVariable nemáš pole ani iterátor, nýbrž instanci třídy Nette\Database\Table\Selection.

Od kdy se nedá Nette\Database\Table\Selection iterovat?

Kastan
Člen | 4
+
0
-

Už jsem to vyřešil definováním

private  $anyVariable = array();

jako pole a všechno funguje jak má

Editoval Kastan (7. 7. 2018 13:38)

duke
Člen | 650
+
0
-

rkor napsal:

duke napsal:
Jde o to, že v $anyVariable nemáš pole ani iterátor, nýbrž instanci třídy Nette\Database\Table\Selection.

Od kdy se nedá Nette\Database\Table\Selection iterovat?

Moje chyba. Přehlédl jsem, že Nette\Database\Table\Selection implementuje iterator.