Ajaxove nacteni celeho presenteru do sablony

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

Zdravim, predem upozornuji ze jsem v nette mirne pokrocily a prozatim ne zadny profesional.
Vim, ze v ramci jednoho presenteru neni problem s invalidovanim snippetu a ze se daji ruzne menit viewy.

Potreboval bych neco podobneho, ale na urovni presenteru.

Na ukazku slape momentalne bez nette, ale rad bych web do nej predelal. Pro priblizeni problemu: polozky hlavniho menu by byly jednotlive presentery (SpolecnostPresenter, ProduktyPresenter). Momentalne funguje jak ajaxove tak i bez js.

Jednotlive hlavni sekce nelze udelat jako pohledy jednoho presenteru z toho duvodu, ze kazda ze sekci bude mit jeste sve vlastni snippety a dalsi ajaxova volani primo v sobe (napr sekce Spolecnost leve menu → Profil, Filozofie)

Momentalne je to reseno cistym php + jquery. Nacitani prvku z menu je reseno takto:

<script>
  var menu_provadim = false;
  var menu_aktualni;
  $( "#menu li a").live("click", function(event){
    var url = $(this).attr("href");
    event.preventDefault();
    if(menu_provadim == false && menu_aktualni != url){
      menu_aktualni = url;
      menu_provadim = true;

      $('<div id="ajax-spinner"></div>').ajaxStop(function() { $(this).remove(); }).appendTo("#footer p");

      $("#content").toggle('slide', { direction: "left" }, 1000, function(){
        $.get(url, {"jqueryCall": "true"}, function(data){
          $("#content").html(data).toggle('slide', { direction: "right" }, 1250, function(){
            var titulek = $("h1").html();
            $(document).attr("title", titulek);
            menu_provadim = false;
          });
        }, 'html');
      });
     }
  });
</script>

Rikam si, ze kdyz to slape tak jak slape, tak je mozna zbytecne predelavat do nette, ale jde o jakousi sebereflexi a touhu neco zvladnout.

Snad je vse srozumitelne a pochopite co potrebuji.

Dokazal by mi s tim nekdo pomoci/poradit?

edit: overeni zda jde o ajax nebo ne, jak muzete vycist z js provadim predavanim GETu „jqueryCall“ a v sablone overuji ± takto:

<?php
if($_GET["jqueryCall"] != "true"){
  require_once("../template/index.php");
}
else if($_GET["jqueryCall"] == "true"){
  obsah();
}
?>

Editoval Lexi (8. 12. 2011 15:48)

tany
Člen | 31
+
0
-

No nevím, co na to řeknou NetteGuru, ale já jsem jednoduše v šabloně include content obalil snippetem.

	{snippet main}
{include #content}
{/snippet}

Pak jen jednoduše invaliduju tento snippet a funguje to zatím spolehlivě (nenarazil jsem na problém).

Jan Mikeš
Člen | 771
+
0
-

Tak toto mi nefunguje, nevim proc. Uplne zakladni vec, zadne slozitosti.

v sablone mam:

<div id="content">
	{snippet main}
	{include #content}
	{/snippet}
</div>

A v presenteru:

<?php
public function actionDefault(){
	if($this->isAjax())
		$this->invalidateControl();
}
?>

js mam prilozen spravne, ve firebugu v konzoli vidim, ze se json poslal uspesne, je tam snipet s daty ktere tam byt maji, ale obsah snippetu se neprekresli

viz. ukazka: www.vividsolutions.cz/romanskuplik/ (nahore vpravo odkaz „roman skuplik“ ma byt ajaxovy)
urcit jde o nejakou drobnost a ja nejsem schopny ji najit…

Editoval Lexi (15. 12. 2011 16:43)

newPOPE
Člen | 648
+
0
-

Letmo som pozrel, a nevsimol som si, ze by si niekde updatoval snippety v JS.

Sami sa neupdatnu, skus pozriet niekde v doplnkoch https://componette.org/search/?…

Jan Mikeš
Člen | 771
+
0
-

Mas pravdu, diky moc.

Pekne blba chyba z nepozornosti :)