Php 控制器必须返回响应(给定的对象(Symfony\Component\Form\Form)
我们正在使用下面的Symfony2捆绑包来创建一个RESTful APIPhp 控制器必须返回响应(给定的对象(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
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调用吗?