Поскольку я читал, что Chrome испытывает проблемы с зацикливанием видео HTML5, если код ответа не равен 206, я хотел бы отобразить свой шаблон с кодом 206.
Пока я нигде не нашел, как указать HTML-код при рендеринге шаблона … Кто-нибудь уже пробовал это и преуспел?
В контроллере вы можете создать и вернуть объект Response с содержимым и указанным кодом возврата, например:
return new Response(
$this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
'param1' => $param1,
'param2' => $param2,
)),
206 // return code
);
Надеюсь это поможет
Вы можете передать объект ответа с вашим renderResponse, который имеет необходимый код состояния.
$response = new Response('', 206);
return $this->renderResponse(
// Or return $this->container->get('templating')
'AcmeBundle:Video:show.html.twig',
array('video' => video),
$response
);
Если вы не проходите в Response
с вашим renderResponse будет создан автоматически. Если вы передадите один, то его содержимое будет просто установлено на отображаемый шаблон (как вы можете видеть в код)
Я думаю, что вы в этом, прежде чем вы делаете шаблон, вы получите желаемый результат:
$this->getContext()->getResponse()->setStatusCode(206);
Кстати.
Класс Symfony\Component\HttpFoundation\Response
предоставляет константы для всех допустимых HTTP-состояний
Новая реализация
protected function renderError(array $parameters, $statusCode = 500)
{
return $this->render(
'default/error.html.twig',
$parameters,
new Response('', $statusCode)
);
}