Ajax a snippety – nutnost přítomnosti {block script}

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

Narazil jsem teď na zvláštní věc. Při debuggování ajaxu jsem si stáhnul aktuální sandbox a nette.ajax.js.

Použil jsem jednoduchý test invalidace. V presenteru:

public function handleTest()
{
	$this->template->value = 'ajax';
	$this->redrawControl('test');
}


public function renderDefault()
{
	if (! $this->isAjax()) {
		$this->template->value = 'normal';
	}
}

V šabloně default.latte pak:

<a n:href='test!' class="ajax">Ajax me!</a>

{snippet test}
	{$value}
{/}

No a teď to zajímavé. Pokud mám v layoutu následující kód, tak vše funguje dle očekávání. Kliknu na odkaz a hodnota se změní ajaxovým požadavkem.

{block script}
<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>
<script src="{$basePath}/js/main.js"></script>
{/}

Pokud však {block} odstraním, nic se nepřepíše:

<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>
<script src="{$basePath}/js/main.js"></script>

Má tedy v tomto případě {block} nějaký spešl význam? Ve výsledném html kódu se změní jen šablony, půjde tedy o nějakou interní věc (mohu dodat rozdíly, bude-li zájem).

Prosím vyzkoušejte, jestli nejsem někde mimo.