无法使用 FOSRestBundle

Posted

技术标签:

【中文标题】无法使用 FOSRestBundle【英文标题】:Unable to work with FOSRestBundle 【发布时间】:2012-05-21 08:56:44 【问题描述】:

我正在尝试使用 Symfony2 和 FOSRestBundle 来构建一个 REST 框架,但我失败了。

我做了以下事情:

在我的 deps 文件中:

[FOSRest]
    git=git://github.com/FriendsOfSymfony/FOSRest.git
    target=fos/FOS/Rest

[FOSRestBundle]
    git=git://github.com/FriendsOfSymfony/FOSRestBundle.git
    target=bundles/FOS/RestBundle

[JMSSerializerBundle]
    git=git://github.com/schmittjoh/JMSSerializerBundle.git
    target=bundles/JMS/SerializerBundle

在我的应用程序/config.yml 中

fos_rest:
    view:
        formats:
            rss: true
            xml: false
        templating_formats:
            html: true
        force_redirects:
            html: true
        failed_validation: HTTP_BAD_REQUEST
        default_engine: twig


sensio_framework_extra:
    view:
        annotations: false

在我的控制器中:

namespace Rest\WebServiceBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\View\View;  


class DefaultController extends Controller


    public function indexAction($name)
    


  $view = View::create()
          ->setStatusCode(200)
          ->setData($name);
        return $this->get('fos_rest.view_handler')->handle($view);


    

当我转到网址时:http://local.symfony.com/web/app_dev.php/hello/test

我明白了:

Unable to find template "".
500 Internal Server Error - InvalidArgumentException
2 linked Exceptions: Twig_Error_Loader » Twig_Error_Loader

文档让我感到困惑,我无法继续。我想要的只是能够将一组数据传递给控制器​​并取回 JSON 格式。有人可以帮忙吗?

【问题讨论】:

我也遇到了麻烦。对于看似相对简单的任务,这似乎很令人困惑。你有运气吗? 【参考方案1】:

config.ymlformats 部分,您必须启用json 格式并禁用其他格式,并将默认_format 值设置为路由中的json。例如

# app/config/config.yml
fos_rest:
    view:
        formats:
            json: true
            rss: false # removing them will also work
            xml: false
#.......

#bundle/routing.yml
route_name:
  pattern: /route
  defaults:  _controller: Bundle:Controller:Method, _format:json 

或者,在控制器中你可以这样做

$view->setFormat('json');

同时查看文档中给出的示例链接。

【讨论】:

它也对我有用,但只有当我使用数组作为数据时,如果我想输出一个对象怎么办? 不适用于较新的版本。更新的答案:***.com/a/18035437/842697。 cmets 非常有趣。

以上是关于无法使用 FOSRestBundle的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件