呈现具有特定状态代码的模板
Render a template with a specific status code
由于我了解到如果响应代码不是 206,Chrome 将无法循环播放 HTML5 视频,因此我想使用 206 代码呈现我的模板。
但是我在任何地方都找不到如何在呈现模板时指定 html 代码...有人已经尝试过并成功了吗?
在控制器中,您可以创建并return一个包含内容和指定return代码的响应对象,例如:
return new Response(
$this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
'param1' => $param1,
'param2' => $param2,
)),
206 // return code
);
希望对您有所帮助
我想你在渲染模板之前会得到想要的结果:
$this->getContext()->getResponse()->setStatusCode(206);
顺便说一句。
class Symfony\Component\HttpFoundation\Response
为所有有效的 HTTP 状态提供常量
您可以使用具有必要状态代码的 renderResponse 传递响应对象。
$response = new Response('', 206);
return $this->renderResponse(
// Or return $this->container->get('templating')
'AcmeBundle:Video:show.html.twig',
array('video' => video),
$response
);
如果您不通过 renderResponse 传入 Response
,将自动生成一个。如果你传递一个,那么它的内容只是设置为渲染模板的内容(正如你在 the code 中看到的那样)
新实施
protected function renderError(array $parameters, $statusCode = 500)
{
return $this->render(
'default/error.html.twig',
$parameters,
new Response('', $statusCode)
);
}
由于我了解到如果响应代码不是 206,Chrome 将无法循环播放 HTML5 视频,因此我想使用 206 代码呈现我的模板。
但是我在任何地方都找不到如何在呈现模板时指定 html 代码...有人已经尝试过并成功了吗?
在控制器中,您可以创建并return一个包含内容和指定return代码的响应对象,例如:
return new Response(
$this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
'param1' => $param1,
'param2' => $param2,
)),
206 // return code
);
希望对您有所帮助
我想你在渲染模板之前会得到想要的结果:
$this->getContext()->getResponse()->setStatusCode(206);
顺便说一句。
class Symfony\Component\HttpFoundation\Response
为所有有效的 HTTP 状态提供常量
您可以使用具有必要状态代码的 renderResponse 传递响应对象。
$response = new Response('', 206);
return $this->renderResponse(
// Or return $this->container->get('templating')
'AcmeBundle:Video:show.html.twig',
array('video' => video),
$response
);
如果您不通过 renderResponse 传入 Response
,将自动生成一个。如果你传递一个,那么它的内容只是设置为渲染模板的内容(正如你在 the code 中看到的那样)
新实施
protected function renderError(array $parameters, $statusCode = 500)
{
return $this->render(
'default/error.html.twig',
$parameters,
new Response('', $statusCode)
);
}