sendResponse a AbortException
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- raketoplan2005
- Člen | 147
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.