Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 控制器必须返回响应(给定的对象(Symfony\Component\Form\Form)_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 控制器必须返回响应(给定的对象(Symfony\Component\Form\Form)

Php 控制器必须返回响应(给定的对象(Symfony\Component\Form\Form),php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我们正在使用下面的Symfony2捆绑包来创建一个RESTful API new FOS\RestBundle\FOSRestBundle(), new JMS\SerializerBundle\JMSSerializerBundle(), new Nelmio\ApiDocBundle\NelmioApiDocBundle(), 在运行php composer.phar更新后,我们得到以下错误 [2014-12-05 10:39:41] security.INFO: Populated Se

我们正在使用下面的Symfony2捆绑包来创建一个RESTful API

new FOS\RestBundle\FOSRestBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
在运行php composer.phar更新后,我们得到以下错误

[2014-12-05 10:39:41] security.INFO: Populated SecurityContext with an anonymous Token [] []
[2014-12-05 10:39:41] request.CRITICAL: Uncaught PHP Exception LogicException: "The controller must return a response (Object(Symfony\Component\Form\Form) given)." at /var/www/html/symfony2/app/bootstrap.php.cache line 3020 {"exception":"[object] (LogicException: The controller must return a response (Object(Symfony\\Component\\Form\\Form) given). at /var/www/html/symfony2/app/bootstrap.php.cache:3020)"} []
[2014-12-05 10:39:41] security.DEBUG: Write SecurityContext in the session [] []
我们使用以下步骤在服务器上安装了Symfony2

//install symfony
php composer.phar create-project symfony/framework-standard-edition symfony2/

//move composer into symfony folder
cp composer.phar symfony2/composer.phar
rm composer.phar
cd symfony2

//symfony dependencies
php composer.phar require doctrine/doctrine-fixtures-bundle
php composer.phar require "friendsofsymfony/rest-bundle" "@dev"
php composer.phar require "jms/serializer-bundle" "@dev"
php composer.phar require "nelmio/api-doc-bundle" "@dev"
API请求返回500服务器错误

我不确定它为什么不起作用,因此我已将错误追溯到以下几点

@Annotations\View(
     templateVar = "form"
)
ClassResourceInterface类负责上述操作

这可能与此问题有关,但此处发布的解决方案不起作用:

这个类有问题:

Nelmio\ApiDocBundle\Annotation\ApiDoc
有人对此也有意见吗


谢谢

在开始任何新项目之前,请尝试自我更新您的composer文件,以避免出现问题

composer self-update
或者,如果您的www目录中安装了composer:

php composer.phar self-update
然后,您可以使用所需的所有捆绑包创建一个新的symfony项目:

composer create-project symfony/framework-standard-edition symfony2/
cd symfony2
composer require doctrine/doctrine-fixtures-bundle
composer require friendsofsymfony/rest-bundle
composer require jms/serializer-bundle
composer require nelmio/api-doc-bundle
有时在这一点上,我需要为某些目录(如“app/cache”或“app/bootstrap.php.cache”)授予读/写权限,因为我的终端使用我的用户,而apache使用的是www用户

然后,您必须在app/AppKernel.php中注册新捆绑包

new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
new FOS\RestBundle\FOSRestBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
然后,您的Bundle NelmioApiDocBundle需要注册自己的路由和配置:

# app/config/routing.yml
NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix:   /api/doc

# app/config/config.yml
nelmio_api_doc: ~

在这一点上,一切都必须工作,因为我已经这样做了。

您应该在文件/app/config/config.yml中设置FOS REST配置

例如:

#/app/config/config.yml
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: false
routing_loader:
   default_format: json
view:
    view_response_listener: 'force'
    formats:
        xml: true
        json : true
    default_engine: none
    templating_formats:
        html: true
access_denied_listener:
    json: true
allowed_methods_listener: true

您对
注释
别名的使用声明是什么?@WouterJ您所说的使用声明是什么意思?我按照步骤进行了操作,一切都按预期顺利进行。API文档显示没有任何问题,但是当我调用任何API调用时,仍然会得到相同的500错误。所以你认为问题是因为这些捆绑包而不是你自己的API代码?你能分享一些导致500错误的API调用吗?