AJAXové odkazy

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

Ahoj, mam menu polozek PolozkaA, PolozkaB, PolozkaC a chci, aby jeho odkazy fungovaly AJAXove, ale pri zapnutem AJAXu se mi nenastavi dany presenter PresenterPolozkaA, PresenterPolozkaB nebo PresenterPolozkaC. Bez AJAXu Nette vse udela jak ma (zobrazi dany presenter) ale s AJAXem se pouze zpracuje pozadavek, prijme se dany obsah (vidno ve Firebugu), ale nenastavi se presenter. Jak to tedy udelat s AJAXem?

Editoval suxik (3. 2. 2010 18:58)

Jakub Šulák
Člen | 222
+
0
-
  • máš v šablonách snippety?

pošli šablonu…

suxik
Člen | 62
+
0
-

snippet tam mam, kod sablony:

<?php
@{block content}

{snippet list}
	{foreach $items as $item}
	        <h2>{$item->name}</h2>
        {/foreach}
{/snippet}

{/block}
?>

pouzivam komponentu TreeView se zapnutym AJAXem (pri vypnutem vse OK)

Kod jquery.nette.js:

<script>
jQuery.extend({
    nette: {
        updateSnippet: function (id, html) {
            $("#" + id).fadeTo("fast", 0.01, function () {
                $(this).html(html).fadeTo("fast", 1);
            });

        },

        success: function (payload) {
            // redirect
            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }

            // snippets
            if (payload.snippets) {
                for (var i in payload.snippets) {
                    jQuery.nette.updateSnippet(i, payload.snippets[i]);
                }
            }
        }
    }
});

jQuery.ajaxSetup({
    success: jQuery.nette.success,
    dataType: "json"
});

$("a.ajax").live("click", function (event) {
    event.preventDefault();
    $.get(this.href);
});
</script>
Honza Kuchař
Člen | 1662
+
0
-

Překreslování snippetů nejde používat napříč presentery. Pokud chceš, můžeš postavit aplikaci pod jedním presenerem a pod ním mít strom komponent (component-based application)

nAS
Člen | 277
+
0
-

honzakuchar napsal(a):

… postavit aplikaci pod jedním presenerem a pod ním mít strom komponent (component-based application)

Už jsi to někdy reálně dělal? Nenapsal bys k tomu pár slov, co to přineslo na výhody a nevýhody?

suxik
Člen | 62
+
0
-

no nejak nevim, jak bych to jako component-base seskladal. Mam klasicke top-menu s odkazy na kontakty, informace atd. a v leve casti stromove menu vyrobku (podobne jako to ma napr. czc.cz) – hornimi odkazy se odkazuji na jednotlive presentery (f-a-q, kontakt atd.) ale stromovym menu chci po kliknuti na polozku zobrazit vyrobky dane kategorie v presenteru item-list a tam mi to prave nefunguje s ajaxem (dana tabulka ohranicena snippetem se mi neprekresli, ackoli ji v presenteru invaliduji)

A jak mam resit generovani odkazu na detail vyrobku? chci predat pouze id. Udelal jsem dalsi presenter ItemDetail, a odkazy volam v sablone takto, ale nefunguje to:

<?php
{plink ItemDetail, $item->id}
?>
PetrP
Člen | 587
+
0
-

honzakuchar napsal(a):

Překreslování snippetů nejde používat napříč presentery.

Když jsem si kdysi z tím hrál tak mi to fungovalo. Nějak se to změnilo?