Snippety a spol
- Jakub Lédl
- Člen | 55
Zdravím. Náhle mi přestalo fungovat AJAXování v Nette. Vůbec netuším, čím může být problém způsoben. Podrobným zkoumáním a zkoušením jsem se dopracoval těchto 2 bodů:
- Požadovaný snippet se přenese, ale jeho hodnota je null. Jak to vím? Upravil jsem callback jQuery.nette.success:
<script>
if (payload.snippets) {
for (var i in payload.snippets) {
alert(i + " - " + payload.snippets[i]);
//jQuery.nette.updateSnippet(i, payload.snippets[i]);
}
}
</script>
Výsledný alert hlási: snippet–posts – null
- Neměla by být chyba ve stránkovaní logice, databázových dotazech apod. Proč? pokud vypnu JavaScript, tak přes klasický neAJAXový request vše funguje.
Jediné trochu rozumné vysvětlení, kteé mě napadá, je špatné rozmístění zavináčů. To se mi ovšem zdá správné:
– @layout.phtml – @{include #content}
– default.phtml – 1 x @{block #content}
, v bloku je
snippet posts
, který
kompletně obaluje veškerý obsah.
Nette: 0.9.3, revize 42e9ad2.
- Honza Kuchař
- Člen | 1662
Je to chyba zavináčů. ;) Ještě si zkontroluj zavináč před extends
P.S.: Nainstaluj si Firefox a do něj Firebug a FirePHP. Rozhodně ti to usnadní vývoj ajaxových aplikací.
- Honza Kuchař
- Člen | 1662
Pokud tam extends nikde nemáš, tak to řešit nemusíš. Nette se o to postará samo. Ale pokud používáš extends a u tohto používáš AJAX, tak musíš mít před extends zavináč.
P.S.: Extends se používá právě v nových šablonách. Ve starých se
používalo $presenter->setLayout();
což bylo návrhově
špatně a ještě to neumožňovalo dělat kaskády.
- Jakub Lédl
- Člen | 55
Tak tohle bych potřeboval trošičku vysvětlit.
Nepoužívám {extends}. OldLayoutMode mám na FALSE. Jakmile tedy odstraním zavináče (což je, předpokládám, to co jsi myslel tím „Nette se o to postará samo“, i když je pro mě novinkou, že by @ magie byla pasé), tak se mi náhle šablony renderují bez layoutu. Jakmile tam @ vrátím (do layoutu před include, do šablony před block), mám layout zpět. Nicméně, přesevšechno co dělám, AJAX stále ne a ne fungovat.
…
Už jsem se v tom ztratil. Jaké šablony tedy používám? Proč to pořád nefunguje? Je vůbec černá černá a bílá bílá?