Řízení výstupu – globální řešení

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

Ahoj, přemýšlím nad unifikovaným řešením řízení requestu a response, jde mi o možnost nastavení templatu requestem (třeba pro ligth zobrazení odkazu z fb) … , a možnost poslat response jako payload.

Request mám vyřešený, tam to je o tom, co presenter povolí.

Ale nevím, jak inteligentně napsat řízení response, předpokládám, že nebude stačit jen zachytnout response a poslat ji jako payload.

Poradil by mi někdo ? Díky.

tany
Člen | 31
+
0
-

Tak primitivní řešení mě napadlo, rozhodně není kompletní a použití exit() považuju za humus.

<?php
    protected function shutdown($response)
    {
    /*  _payload jsou parametry pro rizeni zachycene a fitrovane v requestu,
     *  snippet je urcen k poslani puvodni text response v podobe snippetu,
     *  aby sel zpracovat js nette handlerem pro payload
     */

        if(isset($this->_payload['snippet']) and $this->getHttpResponse()->getCode() == 200)
        {
            if($response instanceof \Nette\Application\Responses\TextResponse)
            {
                // kdyz uz tu ten objekt je, proc vytvaret vlastni ..
		$this->payload->snippets[$this->_payload['snippet']] = (string)$response->getSource();
                $this->_response = new \Nette\Application\Responses\JsonResponse($this->payload);
            }
            elseif ($response instanceof \Nette\Application\Responses\JsonResponse)
            {
                $this->_response = $response;
                // zatim zbytecny
            }
            else
            {
                $this->_response = $response;
            }
            $res = new Nette\Http\Response();
            $this->_response->send($this->getHttpRequest(),$res);
            // nevim jak jinak zabranit aplikaci v poslani dalsi response, terminate zde jiz nejde.
            exit();
        }
        else
        {
            parent::shutdown($response);
        }
    }
?>