nefunkční AJAX při sendResponse()

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

nazdar, mám následující problém a prosím o radu:

nefungují mi žádné AJAX requesty, pokud v BasePresenter je definována metoda sendResponse(), jež používám pro minifikaci výstupu:

public function sendResponse(Nette\Application\IResponse $response) {
        parent::sendResponse(new \Nette\Application\Responses\TextResponse(Minify_HTML::minify((string) $response->getSource())));
    }

Potřeboval bych to tedy zachránit nějak takto:

public function sendResponse(Nette\Application\IResponse $response) {
        if($this->isAjax()){
            //magic
        }else{
            parent::sendResponse(new \Nette\Application\Responses\TextResponse(Minify_HTML::minify((string) $response->getSource())));
        }
    }

Případně, nějak jinak. Díky za pomoc.

Majkl578
Moderator | 1364
+
0
-

Osobně si myslím, že řešit minifikaci v presenteru překrytím téhle metody je špatné. Měl by sis napsat vlastní response fungující podobně jako TextResponse, navíc ale minifikující výstup. Následně pak v presenteru používat tu tvoji response pro odeslání šablony. Konkrétně bys překryl metodu sendTemplate(), problém je, že v ní je dost nešikovně zadrátovaný i další kód. Pokud bys chtěl minifikovat i snippety, to by bylo ještě o něco horší, musel bys překrýt metodu sendPayload() a v ní minifikovat jednotlivé prvky pole snippets (pokud existuje).