eZ\Publish\Core\REST\Common\Output\Visitor::visit PHP Method

visit() public method

Visit struct returned by controllers.
public visit ( mixed $data ) : Response
$data mixed
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;
    }

Usage Example

 /**
  * Display the controller result
  *
  * @param RMF\Request $request
  * @param mixed $result
  */
 public function display(RMF\Request $request, $result)
 {
     if ($result === null) {
         $message = new Common\Message(array('Status' => '200 No content'));
     } else {
         $message = $this->visitor->visit($result);
     }
     foreach ($message->headers as $name => $value) {
         if ($name === 'Status') {
             // Special handling for PHP running as an Apache module
             header($_SERVER['SERVER_PROTOCOL'] . ' ' . $value);
         }
         header("{$name}: {$value}");
     }
     echo $message->body;
 }
All Usage Examples Of eZ\Publish\Core\REST\Common\Output\Visitor::visit