Vypisování podstránek ajaxem (nette.ajax.js)

luboshilgert
Člen | 11
+
0
-

Ahoj, už se s tím peru strašně dlouho.
Mám nette.ajax.js a nějak se s ním rozkoukávám, umím odesílat formy zpracovávat signály, ale teď bych to chtěl použít na výpis obsahu nějaké podstránky.
Zatím to řeším pomocí javascriptu (jquery), ale chtěl bych se naučit použití snippetů a dle mého čistčí verzi když už to nette ajax a snippety existují:)
Uvedu příklad jak to teď mám (a jak to funguje) snad z toho bude pochopitelné o co mi jde:

V jedné latte šabloně mám sub-menu odkazů. Např. odkaz:

 <a class="nav-link nav-item" n:href="Strategy:about $strategy->idstrategy" onclick="showAbout({$idstrategy}, About);return false;">About</a>
.
.
.
<div id="strategy_subpage{$idstrategy}" class="subpage"></div>

Pak mám javascript

function showAbout(idstrategy, name) {
    $("#dropdown_text" + idstrategy).html(name);
    $.ajax({
        type: 'GET',
        dataType: "html",
        url: '/o-zeusu?idstrategy=' + idstrategy,
        success: function (data) {
            $('#strategy_subpage' + idstrategy).html("");
            $('#strategy_subpage' + idstrategy).html(data);
        }
    });
}

Tímto volám odpovídající presenter (tento presenter je jiný než ten co vykresluje šablonu výše), který vyplní danou latte šablonu a pošle mi html strukturu, kterou já vypíšu do připraveného divu
Presenter:

public function renderAbout($idstrategy) {
        parent::renderDefault();
        $this->template->idstrategy = $idstrategy;
        $this->template->strategyName = Constants::STRATEGY_NAMES[$idstrategy];
    }

Odpovídající latte:

<div>
    {if $idstrategy == 1}
        <p class="text-white mb-4">
            Lorem ipsum (zkráceně lipsum) je označení pro standardní pseudolatinský text užívaný v grafickém designu a navrhování jako demonstrativní výplňový text při vytváření pracovních ukázek grafických návrhů (např. internetových stránek, rozvržení časopisů či všech druhů reklamních materiálů). Lipsum tak pracovně znázorňuje text v ukázkových maketách (tzv. mock-up) předtím, než bude do hotového návrhu vložen smysluplný obsah.
        </p>
    {else}
         <p class="text-white mb-4">
            Pokud by se pro stejný účel použil smysluplný text, bylo by těžké hodnotit pouze vzhled, aniž by se pozorovatel nechal svést ke čtení obsahu. Pokud by byl naopak použit nesmyslný, ale pravidelný text (např. opakování „asdf asdf asdf…“), oko by při posuzování vzhledu bylo vyrušováno pravidelnou strukturou textu, která se od běžného textu liší. Text lorem ipsum na první pohled připomíná běžný text, slova jsou různě dlouhá, frekvence písmen je podobná běžné řeči, interpunkce vypadá přirozeně atd.
        </p>
    {/if}
</div>

Moc nevím co obalit snippetem a kde volat překreslení…o vykreslení About se stará jiný presenter než o vykreslení nadstránky s odkazy…
díky

CzeM
Člen | 9
+
+1
-

Doporučuju použít Nittro (https://www.nittro.org/), spoustu věcí (i tvůj požadavek) vyřeší za tebe.