/** * Visit struct returned by controllers. * * @param mixed $data * * @return \Symfony\Component\HttpFoundation\Response */ public function visit($data) { $this->generator->reset(); $this->generator->startDocument($data); $this->visitValueObject($data); //@todo Needs refactoring! // A hackish solution to enable outer visitors to disable setting // of certain headers in inner visitors, for example Accept-Patch header // which is valid in GET/POST/PATCH for a resource, but must not appear // in the list of resources foreach ($this->response->headers->all() as $headerName => $headerValue) { if ($headerValue[0] === false) { $this->response->headers->remove($headerName); } } $response = clone $this->response; $response->setContent($this->generator->isEmpty() ? null : $this->generator->endDocument($data)); // reset the inner response $this->response = new Response(null, 200); $this->statusCode = null; return $response; }