呈现具有特定状态代码的模板

时间:2015-03-05 16:33:27

标签: php symfony partial http-status-codes

由于我已经知道如果回复代码不是206,Chrome浏览器无法循环播放HTML5视频,我想用206代码渲染我的模板。

然而,在渲染模板时,我还没有找到如何指定html代码......有没有人尝试过并成功了?

4 个答案:

答案 0 :(得分:6)

在控制器中,您可以创建并返回包含内容和指定返回码的Response对象,例如:

return new Response(
    $this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
            'param1'    => $param1,
            'param2'     => $param2,
        )),
        206  // return code
);

希望这个帮助

答案 1 :(得分:6)

您可以使用具有必要状态代码的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,则会自动生成一个。{1}}。如果你传递了一个,那么它的内容只是设置为渲染模板的内容(正如你在the code中看到的那样)

答案 2 :(得分:1)

我想在你渲染模板之前,你会得到所需的结果:

$this->getContext()->getResponse()->setStatusCode(206);    

顺便说一句。
Symfony\Component\HttpFoundation\Response为所有有效的HTTP状态提供常量

答案 3 :(得分:1)

新实施

protected function renderError(array $parameters, $statusCode = 500)
{
    return $this->render(
        'default/error.html.twig',
        $parameters,
        new Response('', $statusCode)
    );
}