可以确保只有一条路线只能以html格式提供吗?
在配置中我设置了html和json,但是对于只有一条路线,我希望没有使用json。
你能做到吗?答案 0 :(得分:2)
我没有试过这个,因为我在手机上,但是你看过这样的路线尝试这样的事情:
my-awesome-route:
pattern: /hello/{fist_name}/{last_name}.{_format}
defaults: { _controller: AcmeHelloBundle:Default:index, _format:html}
requirements:
_format: html
答案 1 :(得分:1)
您可以在控制器操作中的视图上调用setFormat('html')
。
例如,仅渲染并返回模板:
class AcmeController extends FOSRestController
{
public function getAction()
{
// ...
$templateData = [
'some' => $vars,
];
$view = $this->view(null, 200)
->setFormat('html')
->setTemplate("AcmeBundle:Tpl:some.html.twig")
->setTemplateData($templateData);
return $this->handleView($view);
}
}
但是视图处理程序将始终尝试呈现模板。如果您因为已经拥有html而不需要渲染,只需返回带有正确标题的新symfony响应:
class AcmeController extends FOSRestController
{
public function getAction()
{
// you already have $html
$headers = ['Content-Type' => 'text/html; charset=UTF-8'];
return \Symfony\Component\HttpFoundation\Response::create($html, 200, $headers);
}
}