aplikacia ajaxu v navigacii stranky
- Stene
- Člen | 6
V šabloně stačí obalit include snippetem:
{snippet content}
{include content}
{/snippet}
v presenteru pak invalidovat snippet:
public function actionFoo()
{
if ($this->isAjax()) {
$this->redrawControl('content');
}
}
Pokud používáš již nějaký existující javascript pro handling ajaxu, pak stačí jen nabindovat události click na položky v menu.
Pokud ne, příklad v jquery:
$('#menu > li > a').click(function(e) {
e.preventDefault();
$.get($(this).attr('href'), function(payload) {
if (payload.snippets) {
for (var id in payload.snippets) {
$('#' + id).html(payload.snippets[id]);
}
}
});
});
Editoval Stene (4. 9. 2015 20:29)
- Matej123
- Člen | 150
ano tomu rozumiem, ale neviem to realne sfunkcnit , ked mame nieco take v sablone, v menu :
<li><a class=„ajax“ n:href=„:Core:Article:list“>Články</a></li>
ako mam z toho urobit ajaxove volanie(co namiesto :Core:Article:list ?) a v ktorom presenteri mam potom spracovavat tieto ajaxy z menu(alebo v kazdom osobitne?)? poznamaka: jQuery mam vyrieseny, ide mi hlavne o tu cast v nette.
Dakujem.
- Stene
- Člen | 6
Adresa v menu zůstává stejná, tedy „:Core:Article:list“. V
ArticlePresenter
pak v akci actionList
(případně
renderList
) stačí přidat již zmíněný kód. Více nastavovat
netřeba – pokud do nette proteče ajax request, vrátí se v response pouze
invalidované snippety formou JSONu. Pokud to ajax nebude, vrátí se
standrtní obsah.
public function actionList()
{
...
if ($this->isAjax()) {
$this->redrawControl(nazevSnippetu);
}
}
Editoval Stene (4. 9. 2015 21:08)