Php 感光框架外束
我正在使用symfony3.3,并试图使用FOSRestController来制作一个API 以下是我的配置文件:Php 感光框架外束,php,symfony,fosrestbundle,Php,Symfony,Fosrestbundle,我正在使用symfony3.3,并试图使用FOSRestController来制作一个API 以下是我的配置文件: # SensioFrameworkExtra Configuration sensio_framework_extra: view: { annotations: false } # FOSRest Configuration fos_rest: format_listener: rules: - { path: '^
# SensioFrameworkExtra Configuration
sensio_framework_extra:
view: { annotations: false }
# FOSRest Configuration
fos_rest:
format_listener:
rules:
- { path: '^/api', priorities: ['json'], fallback_format: 'json' }
- { path: '^/', stop: true }
view:
view_response_listener: true
控制器:
<?php
namespace AppBundle\Api;
use FOS\RestBundle\Controller\Annotations as REST;
use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\View\View;
class MyController extends FOSRestController
{
/**
* @REST\Get("/some-url")
* @REST\View()
*
* @return View
*/
public function getSomethingAction()
{
$view = View::create();
return $view;
}
}
路由:
api_something:
type: rest
resource: AppBundle\Api\MyController
该捆绑包已安装并添加到AppKernel.php文件中
有什么能帮我吗
谢谢删除sensio_框架的配置\u额外:
sensio_framework_extra:
view: { annotations: false }
因为默认配置是annotations:true
(您可以查看vendor/sensio/framework-extra-bundle/DependencyInjection/configuration.php)
将sensio_framework_的默认配置设为extra
您可能忘记激活config.yml()中序列化程序的注释
我建议您尝试以下配置:
#app/config/config.yml
framework:
....
serializer: { enable_annotations: true }
fos_rest:
....
view:
view_response_listener: 'force'
FosRestBundle视图\响应\侦听器的文档:
尝试创建目录AppBundle/Api/Controller。并将MyController.php放入其中。您的控制器将被命名为
\AppBundle\Api\Controller\MyController
删除sensio_framework_extra的配置:
sensio_framework_extra:
view: { annotations: false }
因为默认配置是annotations:true
(您可以查看vendor/sensio/framework-extra-bundle/DependencyInjection/configuration.php)
将sensio_framework_的默认配置设为extra
您可能忘记激活config.yml()中序列化程序的注释
我建议您尝试以下配置:
#app/config/config.yml
framework:
....
serializer: { enable_annotations: true }
fos_rest:
....
view:
view_response_listener: 'force'
FosRestBundle视图\响应\侦听器的文档:
尝试创建目录AppBundle/Api/Controller。并将MyController.php放入其中。您的控制器将被命名为
\AppBundle\Api\Controller\MyController
将以下代码复制到main services.yml
sensio_framework_extra.view.listener:
alias: Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener
解决方案的来源:
将以下代码复制到main services.yml
sensio_framework_extra.view.listener:
alias: Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener
解决方案的来源:
另一种解决方案来自:
在bundles.php
中,Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle
必须位于FOS\RestBundle\FOSRestBundle
之后,才能正常工作另一个解决方案来自:
在
bundles.php
中,Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle
必须位于FOS\RestBundle\FOSRestBundle
之后,才能正常工作用Symfony 4.0回答同一问题
路由/rest.yaml路由配置
app_admin_users:
type: rest
resource: App\Controller\Api\Admin\User\UsersController
prefix: /api
fos_rest.yaml已启用查看响应侦听器
fos_rest:
view:
view_response_listener: true
框架\u extra.yaml已启用视图注释
sensio_framework_extra:
view: { annotations: true }
config.yaml导入fos\u rest和框架\u extra
imports:
- { resource: fos_rest.yaml }
- { resource: framework.yaml }
- { resource: framework_extra.yaml }
使用Symfony 4.0回答相同的问题 路由/rest.yaml路由配置
app_admin_users:
type: rest
resource: App\Controller\Api\Admin\User\UsersController
prefix: /api
fos_rest.yaml已启用查看响应侦听器
fos_rest:
view:
view_response_listener: true
框架\u extra.yaml已启用视图注释
sensio_framework_extra:
view: { annotations: true }
config.yaml导入fos\u rest和框架\u extra
imports:
- { resource: fos_rest.yaml }
- { resource: framework.yaml }
- { resource: framework_extra.yaml }
已发布的配置文件清楚地显示设置为false的批注?已发布的配置文件清楚地显示设置为false的批注?已启用序列化程序的批注。这正在工作,但我无法在控制器中使用视图注释,我收到一条错误消息:“类看起来不像控制器类”您的控制器必须扩展FOS\RestBundle\controller\FOSRestController他扩展了FOS\RestBundle\controller\FOSRestController,我编辑帖子以添加此部分您是否已将添加到app/config/routing.yml中?是的,我看到带有php bin/console debug的路由:router命令&post updated序列化程序的说明已启用。这正在工作,但我无法在控制器中使用视图注释,我收到一条错误消息:“类看起来不像控制器类”您的控制器必须扩展FOS\RestBundle\controller\FOSRestController他扩展了FOS\RestBundle\controller\FOSRestController,我编辑帖子以添加此部分您是否已将添加到app/config/routing.yml中?是的,我看到使用php bin/console debug:router命令和帖子更新的路由