Renders the template and initializes a new response object with the
rendered template content.
public onKernelView ( |
||
$event | A GetResponseForControllerResultEvent instance |
/** * Renders the parameters and template and initializes a new response object with the * rendered content. * * @param GetResponseForControllerResultEvent $event A GetResponseForControllerResultEvent instance */ public function onKernelView(GetResponseForControllerResultEvent $event) { $request = $event->getRequest(); $configuration = $request->attributes->get('_view'); $view = $event->getControllerResult(); if (!$view instanceof View) { if (!$configuration && !$this->container->getParameter('fos_rest.view_response_listener.force_view')) { return parent::onKernelView($event); } $view = new View($view); } if ($configuration) { if ($configuration->getTemplateVar()) { $view->setTemplateVar($configuration->getTemplateVar()); } if (null === $view->getStatusCode() && $configuration->getStatusCode()) { $view->setStatusCode($configuration->getStatusCode()); } if ($configuration->getSerializerGroups()) { $context = $view->getSerializationContext() ?: new SerializationContext(); $context->setGroups($configuration->getSerializerGroups()); $view->setSerializationContext($context); } } if (null === $view->getFormat()) { $view->setFormat($request->getRequestFormat()); } $vars = $request->attributes->get('_template_vars'); if (!$vars) { $vars = $request->attributes->get('_template_default_vars'); } $viewHandler = $this->container->get('fos_rest.view_handler'); if ($viewHandler->isFormatTemplating($view->getFormat())) { if (!empty($vars)) { $parameters = (array) $viewHandler->prepareTemplateParameters($view); foreach ($vars as $var) { if (!array_key_exists($var, $parameters)) { $parameters[$var] = $request->attributes->get($var); } } $view->setData($parameters); } $template = $request->attributes->get('_template'); if ($template) { if ($template instanceof TemplateReference) { $template->set('format', null); } $view->setTemplate($template); } } $response = $viewHandler->handle($view, $request); $event->setResponse($response); }
public function onKernelView(GetResponseForControllerResultEvent $event) { $request = $event->getRequest(); /** @var Jsend $configuration */ $configuration = $request->attributes->get('_jsend'); if (!$configuration) { return parent::onKernelView($event); } $view = $event->getControllerResult(); if ($view instanceof Form && !$view->isValid()) { $configuration->setDataVar('form'); $configuration->setStatus(Jsend::STATUS_FAIL); } if ($configuration->getStatus() == Jsend::STATUS_FAIL) { $viewConfig = $request->attributes->get('_view'); if (!$viewConfig) { $viewConfig = new View(array()); $request->attributes->set('_view', $viewConfig); } $viewConfig->setStatusCode(400); } $result = array('status' => $configuration->getStatus(), 'data' => array($configuration->getDataVar() => $view)); $event->setControllerResult($result); }
/** * Renders the parameters and template and initializes a new response object with the * rendered content. * * @param GetResponseForControllerResultEvent $event */ public function onKernelView(GetResponseForControllerResultEvent $event) { $request = $event->getRequest(); /** @var \FOS\RestBundle\Controller\Annotations\View $configuration */ $configuration = $request->attributes->get('_view'); $view = $event->getControllerResult(); $customViewDefined = true; if (!$view instanceof View) { if (!$configuration && !$this->container->getParameter('fos_rest.view_response_listener.force_view')) { return parent::onKernelView($event); } $view = new View($view); $customViewDefined = false; } if ($configuration) { if ($configuration->getTemplateVar()) { $view->setTemplateVar($configuration->getTemplateVar()); } if ($configuration->getStatusCode() && (null === $view->getStatusCode() || Codes::HTTP_OK === $view->getStatusCode())) { $view->setStatusCode($configuration->getStatusCode()); } if ($configuration->getSerializerGroups() && !$customViewDefined) { $context = $view->getSerializationContext() ?: new SerializationContext(); $context->setGroups($configuration->getSerializerGroups()); $view->setSerializationContext($context); } if ($configuration->getSerializerEnableMaxDepthChecks()) { $context = $view->getSerializationContext() ?: new SerializationContext(); $context->enableMaxDepthChecks(); $view->setSerializationContext($context); } $populateDefaultVars = $configuration->isPopulateDefaultVars(); } else { $populateDefaultVars = true; } if (null === $view->getFormat()) { $view->setFormat($request->getRequestFormat()); } $vars = $request->attributes->get('_template_vars'); if (!$vars && $populateDefaultVars) { $vars = $request->attributes->get('_template_default_vars'); } $viewHandler = $this->container->get('fos_rest.view_handler'); if ($viewHandler->isFormatTemplating($view->getFormat())) { if (!empty($vars)) { $parameters = (array) $viewHandler->prepareTemplateParameters($view); foreach ($vars as $var) { if (!array_key_exists($var, $parameters)) { $parameters[$var] = $request->attributes->get($var); } } $view->setData($parameters); } $template = $request->attributes->get('_template'); if ($template) { if ($template instanceof TemplateReference) { $template->set('format', null); } $view->setTemplate($template); } } $response = $viewHandler->handle($view, $request); $event->setResponse($response); }