Změna <title>
při AJAXovém požadavku
Pokud bychom chtěli při AJAXovém požadavku změnit titulek stránky (obsah značky <title>
v hlavičce), máme na výběr dvě možnosti. Jednak můžeme využít javascriptové History API, konkrétně metodu
window.history.pushState()
(která nám umožňuje přepisovat historii prohlížení v browseru). Anebo se
spokojíme s využitím snippetů.
Od verze Nette 2.0 lze používat atributovou variantu makra {snippet}
, čehož využijeme. A jak bude tedy
AJAXová změna <title>
pomocí snippetů vypadat v praxi?
<title n:snippet="title">{#title|striptags|upper}Default Title{/#}</title>
Invalidace bude stejná jako u jakéhokoliv jiného snippetu:
$this->invalidateControl('title');
V šabloně view pak můžeme pro ukázku implementovat dynamicky se měnící <title>
:
<h1 n:block="title">
{if $presenter->isAjax()}
Loaded With Ajax
{else}
No Ajax Heading
{/if}
</h1>
Uvedený kód počítá s přilinkovaným obslužným skriptem pro AJAX z doplňků.