AJAX a Layout
- Inza
- Člen | 330
Tak mám bug. Možná to nenjí bug, každopádně potřebuju helfnout…
Mám layout a view…
Ve view mám snippety, které se mi už krásně AJAXově překreslují…
Ale, jeden ten snippet vykresluje proměnou title…
A já bych chtěl, aby se změnila zároveň i ta samá proměnná, kterou vykresluje layout v titlu – ale absolutně nevím jak toho dosáhnout..
zkoušel jsem trik, jako že jsem do toho snippetu narval assign, ale to nepomohlo…
Prostě potřebuju udělat to, že mi snippet změní proměnou v layoutu no…AJAXOvě…
Víte někdo jak na to? (pokud možno jinak než, že zruším layout a narvu to všechno do view… to už mě napadlo také…)
- romansklenar
- Člen | 655
Myslím, že tohleto při klasickém renderování nijak nepůjde, protože když vykresluješ šablonu pohledu tak už máš vykreslený layout. Na tyhle účely bylo určeno obrácené renderování.
Jedině někde zkusit to dát do metody prepare
nebo
beforeRender
(pokud jde o snippet tak snad i v
handle
) pokud už tu proměnnou title co hážeš do šablony
pohledu znáš, tam by snad layout ještě nemusel být vykreslený, nevím –
nezkoušel jsem.
- _Martin_
- Generous Backer | 679
Snippety fungují tak, že ti pošlou kus překreslené stránky, kterou JavaScriptem přelepí na místo původní. Takže bys musel mít v layoutu snippet u titulku, tj. něco jako:
{snippet title}
<title>{$title}</title>
{/snippet}
a ten překreslovat. A nebo si AJAXem mezi daty posílat kromě snippetu pohledu i samostatný titulek a na klientovi ho dynamicky nastavovat (pokud to JavaScript umí…?).
- Ondřej Mirtes
- Člen | 1536
K čemu šmarjá to?
A navíc <title>
snippety obalit nelze, v
<head>
snad <div>y
být nesmí, ne?
EDIT: Spelling fail :D
Editoval LastHunter (18. 4. 2009 13:44)
- _Martin_
- Generous Backer | 679
A navíc
<title>
snippety obalit nelze, v<head>
snad<div>y
bít nesmí, ne?
Na tom něco pravdy bude – takže snippety lze vyloučit.
K čemu šmarjá to?
Napadá tě, jak jinak dostat na stránku AJAXově jiný titulek? Snippety padly kvůli divu, poslat celou stránku zase není AJAX… Tak potom – pokud umí JavaScript nastavit titulek – si jej posílat mezi JSON daty a na klientovy měnit obslužným handlerem AJAXové funkce.
- Honza Marek
- Člen | 1664
Jéžišmarjá… Obrácený způsob renderování při ajaxu ničemu nepomůže. Divy v title být nesmí atd…
Budu předpokládat, že používáš tento ajax driver. Čili řešení by bylo asi takto:
V php si můžeš do ajaxové odezvy přidat další „proměnnou“:
$this->getAjaxDriver()->title = $title;
Pak v JS ten ajax musíš volat tak, aby se zpracovával nejen tím mým univerzálním „nette callbackem“, ale i nějakým tvým vlastním.
function myCallback(data) {
if (data.title) {
// tady rozhodně neručím za to, že titulek se nastavuje opravdu takhle
document.title = data.title;
}
};
$.get(adresa, function (data) {
$.netteCallback(data);
myCallback(data);
});
Asi takhle bych to zkoušel já…
- _Martin_
- Generous Backer | 679
Honza M. napsal(a):
Jéžišmarjá… Obrácený způsob renderování při ajaxu ničemu nepomůže. Divy v title být nesmí atd…
Jo tohle jsi myslel tím ježišmarjá… =)
Budu předpokládat, že používáš tento ajax driver. Čili řešení by bylo asi takto:
…
Jsi rychlejší =) Potvrzuji, řešení je funkční a nastavení titulku chodí.
- David Grudl
- Nette Core | 8228
Panebože, možná by mohlo fungovat (druhé title je tag)
{snippet title title}{$title}{/snippet}
- nAS
- Člen | 277
LastHunter napsal(a):
K čemu šmarjá to?
Inza napsal(a):
God;-) – mě je jedno jak to bude fungovat, prostě jen potřebuju, aby to fungovalo;-):-D…
Honza M. napsal(a):
Jéžišmarjá… Obrácený způsob renderování při ajaxu ničemu nepomůže. Divy v title být nesmí atd…
David Grudl napsal(a):
Panebože, možná by mohlo fungovat (druhé title je tag)
Že by se nám tady formoval kroužek věřících? ;)
- tom
- Člen | 171
Inza napsal(a):
Mám layout a view…
Ve view mám snippety, které se mi už krásně AJAXově překreslují…
Muzu poprosit o konkretni ukazku jak na to? Mym zamerem je, ze chci aby se jedna cast stranky (uzavrena v div) pravidelne sama od sebe prekreslovala. rekneme jednou za 30s. Nakopne me nekdo, jak to v nette udelat? Dik
- na1k
- Člen | 288
tom: Pokud chceš ty překreslované data tahat ajaxově, asi bych použil klasický link se signálem (něco jako „další slide“, případně ho pomocí stylů schovat) a pak bych sepsal nějakou minifunkcičku v js, která by co 30s (setInterval) na tento odkaz klikala.
Určitě by to šlo i tak, že ta funkce bude přímo posílat požadavek, ale nevím teď jak vypadá ajaxí nette handler a tohle je celkem čisté řešení i pro případ, že by se js zpracování nette odkazů nějak změnilo.
- tom
- Člen | 171
na1k napsal(a):
… a pak bych sepsal nějakou minifunkcičku v js, která by co 30s (setInterval) na tento odkaz klikala.
muzu poprosit o radu jak by takova js funkce ktera by pravidelne klikala na nejaky odkaz mohla vypadat? zkousim to v jquery, ale nevim jak zaridit to kliknuti :) predem diky za nejakou ukazku
- Honza Kuchař
- Člen | 1662
jeste pridam ten interval :)
setInterval(function(){
$("a.mujodkaz").click();
},30000);