snippety v includované šabloně

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

Ahoj, jak je to prosím se snippety v includované šabloně?
Četl jsem tu, že to na Nette 2.0 nefungovalo, pak zase že možná jo…jaký je současný stav?

Mám jednoduchý kód v šabloně:

{snippet header}
	<h1>Hello .... {ifset $AjaxPokus}{$AjaxPokus}{/ifset}</h1>
{/snippet}

Obsluhu signálu zajišťuji v presenteru následovně:

public function handleChangeHeader() {
	$this->template->AjaxPokus = 'works';
	$this->invalidateControl('header');
}

Pokud tento snippet umístím přímo do hlavní šablony @layout.latte, funguje.
Pokud ho umístím do includovaného souboru detail.latte, nefunguje.

Nejedná se jen o include šablony – šablona edit.latte definuje blok content a v něm je teprve include
šablony detail.latte, kde je opět definice bloku content. Viz níže:

edit.latte

{block #content}
<h1 n:block="title">Upravit sekci</h1>
{include 'detail.latte'}
{/block}

detail.latte

{block #content}
<a n:href="changeHeader!" class="ajax">Zmenit header</a>
	{snippet header}
		<h1>Hello .... {ifset $AjaxPokus}{$AjaxPokus}{/ifset}</h1>
	{/snippet}

{control editForm}
{/block}

Mám blbě udělané šablony nebo je stále problém se snippety v includované šabloně?

Díky.

ruff
Člen | 11
+
0
-

Řeším teď velmi podobnou situaci. Můžete se prosím na to někdo znalejší mrknout?

Mám to následovně:

@layout.latte

<div>
	{include #content}
</div>

@layout.modul.latte

	{extends '../../templates/@layout.latte'}
	{block #navigation}bla bla menu{/block}
	{include #content}

edit.latte

	{extends '../@layout.modul.latte'}
{block #content}
	<a n:href="changeHeader!" class="ajax">Zmenit header</a>
	{snippet header}
 		<h1>Hello .... {ifset $AjaxPokus}{$AjaxPokus}{/ifset}</h1>
	{/snippet}
{/block}

presenter.php

	public function handleChangeHeader() {
		$this->template->AjaxPokus = 'works';
		$this->invalidateControl('header');
	}

Tedy, ajax funguje, když bych dal snippet do šablony 2. stupně, tedy do @layout.modul.latte. Pokud mám snippet tak jak píšu výše, tedy v šabloně 3. stupně (zanoření), tak ajax nefunguje, resp. ajaxový request nedostává zpět obsah, který se mu snažím dát pomocí $this->template ($this->template->AjaxPokus).

Zajímavé je, že pokud bych napsal v presenter.php

	...
		$this->invalidateControl();
	...

tedy pokud bych neuvedl název snippetu, překreslí se logicky celá stránka a to včetně správné nové hodnoty proměnné $this->template->AjaxPokus, tedy „works“.

Díky za každou radu.

Jan Mikeš
Člen | 771
+
0
-

Vyresilo se to nejak? Zrovna jsem se setkal se stejnym problemem a netusim co s tim.

Jan Mikeš
Člen | 771
+
0
-

Konkretne se jedna o toto:

NejakyPresenter → default.latte:

{snippet anketa}{include '../anketa.latte'}{/snippet}

toto funguje, ale pokud ten snippet odstranim a cely obsah souboru anketa.latte obalim ve snippetu tak to nahle prestane fungovat.

Ve firebugu se tento snippet ani neprenese v get pozadavku

doublemcz
Člen | 15
+
0
-

Stále se to ještě děje. To ten bug po dvou letech nikdo nevyřešil/neopravil?

Lexi napsal(a):

Konkretne se jedna o toto:

NejakyPresenter → default.latte:

{snippet anketa}{include '../anketa.latte'}{/snippet}

toto funguje, ale pokud ten snippet odstranim a cely obsah souboru anketa.latte obalim ve snippetu tak to nahle prestane fungovat.

Ve firebugu se tento snippet ani neprenese v get pozadavku