Naplnění HTML proměnnými pomocí ajaxu
- R@da
- Člen | 28
Ahoj,
učím se pracovat s ajaxem v nette a tak jsem si v presenetru vytvořil handleGetItem()
<?php
public function handleGetItem($id)
{
$this->template->itemName = "TEST";
if ($this->isAjax()) {
$this->redrawControl('itemDetail');
}
}
?>
Dále mám v šabloně snippet itemDetail s HTML obsahující proměnnou itemName a odkaz, který spouští daný handle.
<a n:href="getItem! $item->Id" data-toggle="modal" data-target="#orderModal" class="product-item">
{snippet itemDetail}
...kod k modalnimu oknu #orderModal
<div class="col-sm-6 col-xs-12 inline-block">
<strong class="product-title">{$itemName}</strong>
<span class="product-desc">Lorem ipsum</span>
</div>
...
{/snippet}
Potom ještě inicializaci nette.ajax.js
<script>
$(document).ready(function(){
$.nette.init();
});
</script>
Po kliknutí na odkaz, se požadavek do handleGetItem správně odešle, ale
vrátí se mi JSON a vepíše se mi do toho snippetu. Nejlepší by bylo,
kdybych si v handle nadefinoval proměnné a poslal je do šablony, kde by se
jenom zobrazily. Jde to nějak jednoduše?
Nebo budu muset z handle posílat json s datama do šablony a tam ho v js
zpracovat a přes vložit na správná místa?
Jak to nejlépe udělat?
Předem moc děkuji.
- R@da
- Člen | 28
Z nějakého důvodu se po kliknutí neprovede handle, ale default.
Tracy mi po kliku zobrazí: Front:Homepage:default getItem!
.
Nemělo by to jít správně na Front:Homepage:getItem!
? Parametr
jsem prozatím vyhodil pryč…
Url v odkazu je: /www/?do=getItem
Když jsem zkusil dát do defaultu podmínku isAjax a změnil tu proměnnou ve
snippetu, tak se to změnilo. Potřeboval bych ale, aby to probíhalo
v handle.
- Phalanx
- Člen | 310
Tady máš úplně nejjednodušší příklad od Tomáše Votruby:
https://doc.nette.org/…ication/ajax
- zkus si to nejdřív bez modalu
- data by se měli přenačíst sami, v javascriptu s nima pracovat nemusíš (řeší to nette.ajax.js)
- nech tam jen getItem! – proběhne to vždy přes handle i přes default – to je správné chování