Odeslání sendResponse a nastavení HTTP response code
- Martk
- Člen | 661
Takto:
class JsonResponse extends \Nette\Application\Responses\JsonResponse {
/** @var int */
private $code;
public function __construct($payload, ?string $contentType = null, ?int $code = null) {
$this->code = $code;
parent::__construct($payload, $contentType);
}
public function forbiddenCode(): void {
$this->code = 403;
}
public function setCode(?int $code): void {
$this->code = $code;
}
public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse) {
if ($this->code !== null) {
$httpResponse->setCode($this->code);
}
parent::send($httpRequest, $httpResponse);
}
}
Editoval Martk (1. 6. 2018 11:43)
- black1101
- Člen | 21
Ahojte, vyššie uvedený príklad od @nightfish je funkčný aj v najnovšom nette? Dostávam totiž hlášku
Call to undefined method Nette\Application\Responses\JsonResponse::setCode
Zatiaľ čo sa mi podarilo poslať poslať 403 code takýmto spôsobom:
$httpResponse = $this->getHttpResponse();
$httpResponse->setCode(Nette\Http\Response::S403_FORBIDDEN);
$response = new \Nette\Application\Responses\JsonResponse($data);
$this->sendResponse($response);
Je to takto v poriadku? Ďakujem za Vaše rady.
- Ondřej Kubíček
- Člen | 494
ano, tvůj způsob je správně.
když se podíváš na předchozí příspěvky, vidíš že to měl vlastní
upravenou třídu JsonResponse