首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FOSRestBundle强制使用html格式的一条路由。

问FOSRestBundle强制使用html格式的一条路由。
EN

Stack Overflow用户
提问于 2013-08-24 02:01:51
回答 2查看 928关注 0票数 1

是否可以确保仅以html格式提供单一路由?

在配置中,我设置了html和json,但只有一条路径不使用json。

你能做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-28 02:36:13

我没有试过,因为我是在手机上,但你有没有看过这样的尝试,只是为了这一条路线:

代码语言:javascript
复制
my-awesome-route:
  pattern:  /hello/{fist_name}/{last_name}.{_format}
  defaults: { _controller: AcmeHelloBundle:Default:index, _format:html}
requirements:
  _format: html
票数 2
EN

Stack Overflow用户

发布于 2015-10-09 11:54:37

您可以在控制器操作中对视图调用setFormat('html')。

例如,只呈现和返回一个模板:

代码语言:javascript
复制
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响应和正确的标题:

代码语言:javascript
复制
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);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18414194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档