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

  1. pomocí třídy Http: Http::$request->isAjax
  2. 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:

  1. Neexistuje AjaxAction, ale existuje ajax šablona
  2. 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.