sendResponse a AbortException

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

Ahoj,

mám v BasePresenteru pro API tythe dvě metody:

/**
     * Send reponse with error description if there are any
     *
     * @param \Nette\Application\IResponse $response
     */
    public function sendResponse(\Nette\Application\IResponse $response) {

        if (count($this->errors) > 0) {
            if ($this->getHttpResponse()->getCode() == \Nette\Http\Response::S200_OK) {
                $this->getHttpResponse()->setCode(\Nette\Http\Response::S400_BAD_REQUEST);
            }
            $json = new \Nette\Application\Responses\JsonResponse($this->errors);
            return parent::sendResponse($json);
        }

        return parent::sendResponse($response);
    }

    /**
     * Return no body
     * In case of any error - JSON is returned
     */
    public function returnNoData() {
        if (count($this->errors) > 0) {
            $json = new \Nette\Application\Responses\JsonResponse($this->errors);
            $this->sendResponse($json);
        } else {
            $this->terminate();
        }
    }

Když narazím v presenteru na chybu, přidám ji do $errors a zavolám $this->returnNoData(). Po přechodu na Nette 2.1 se sice odpověď normálně správně odešle, ale dostávám po každém takovém volání AbortException.

Ta probublá až k řádku return parent::sendResponse($json); v sendResponse metodě, resp. k Nette\Application\UI\Presenter.php na řádek 619.

Nemůžu přijít na to co za tím stojí, proto bych vás chtěl poprosit o pomoc. Děkuji.

bazo
Člen | 620
+
0
-

terminate a sendResponse vyhadzuju AbortException