- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
Ajax
Klientskou část si musí programátor zajistit sám. Nejlépe pomocí
nějakého javascriptového frameworku, který také automaticky zasílá
hlavičku X-Requested-With (s hodnotou
XMLHttpRequest) pomocí které Háefko framework rozpozná, že jde
o ajaxové volání.
Jestli je stránka volána ajaxem zjistíte
- pomocí třídy Http:
Http::$request->isAjax - v controlleru pomocí objektu s routováním:
$this->routing->ajax
Framework při ajaxovém požadavku funguje pořád stejně, ale nabízí možnost také speciálních method pro ajax. A to ajaxová akce a ajaxová šablona.
Ajax akce
Uvažujme ajaxové volání na
PostController::commentPreview():
public function commentPreviewAction()
{
$this->view->comment = "....";
}
Tedy, nic nestandardního. Ovšem, s nevýhodami, že tuto action lze zavolat i bez ajaxu + nutnost manuálně vypnout renderování layoutu. Pokud se chcete této nevýhody zbavit, použijte tuto konstrukci:
public function commentPreviewAjaxAction()
{
return "Náhled komentáře";
}
Háefko automaticky odešle výsledek převedený do json. Pokud nevrátí pole, je výstup převeden na univerzální pole a následně opět převeden do json. Výše uvedená metoda tedy pošle přes ajax:
{"response": "Náhled komentáře"}
Ajax šablona
Ajax šablona se použije v těchto případech:
- Neexistuje AjaxAction, ale existuje ajax šablona
- Existuje AjaxAction, ale nic nevrátí
Při použití ajax šablony dochází k automatickému vypnutí layoutu a renderovaní debugovacího toolbaru apod., který je přesměrován do firebugu (pokud je firebug zapnut).
Šablona pro ajax má pouze přidanou příponu ajax.
Například comment-preview.ajax.phtml.
