Změna celého latte blocku pomocí AJAXu
- Otik
- Člen | 9
Ahojte všichni!
Prvně se omlouvám, ale už přes 2 hodiny to tu hledám a nikde nic.
Mám problém… v layout.latte mám rozložení
<div class=„col-md-2“></div> → MENU
<div class=„col-md-10“></div> → OBSAH
Řeším obsah druhého divu → mám v něm {include content}, který mi
vždy vykreslí to co chci, samozřejmě.
Dejme tomu, že mám homepage:default a homepage:remove → a chci změnit obsah
blocku content na cílový.
Chtěl bych ale daný content přepsat pomocí AJAXu… obalil jsem to
snippetem, zkoušel jsem různý kombinace přes handlery, ale vůbec netuším,
jak na to.
Pokud by mi někdo poradil, budu hrozně rád a předem Vám všem moc
děkuju za rady!
Ahooooj!
- David Matějka
- Moderator | 6445
co si obalil snippetem? melo by stacit obalit ten include content v layout a pak jej prekreslit – v podstate je jedno kde – v action, v handle, v render.
kdyztak napis, co si zkousel a jak to nefungovalo
- Otik
- Člen | 9
Mám to přesně takhle:
{snippet con}
{include content}
{/snippet}
Ve výsledku všechny cesty mě dovedli k tomu, že neumím překreslit ten snippet.
Zkoušel jsem například přes handler s argumentem cesty k .latte
Poté už ze zoufalství normální n:href=„homepage:remove“ a nějak to
vymyslet v renderu v presenteru → ale nic
Mohl bych tedy poprosit o radu? Díky za reakci
- Ondřej Kubíček
- Člen | 494
stačí zavolat redrawControl
pokud to chceš mít celé ajaxové v rámci jednoho presenteru, tak to můžeš udělat takhle
protected function startup()
{
parent::startup();
if ($this->isAjax()){
$this->redrawControl('con');
}
}
pokud přijde ajax požadavek na ten presenter, překreslí se snippet a načte se nový obsah
- Ondřej Kubíček
- Člen | 494
tak prostě to nacpeš do společného předka
nebo jinak bys to překreslení musel dělat v těch konkrétních akcí, kde
to chceš. např to remove
- Ondřej Kubíček
- Člen | 494
Aha, ty nepoužíváš nějakou knihovnu na Ajax přímo pro Nette? Pak ti to
nemůže fungovat, nepřekreslí se ti snippety. Navíc v tom tvém kódu jen
zavoláš tu adresu a dál nic
Mrkni na na tuhle stránku jak se pracuje s ajaxem v nette https://doc.nette.org/…ication/ajax
A použij nette.ajax.js, nittro nebo něco