Php 感光框架外束

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: '^

我正在使用symfony3.3,并试图使用FOSRestController来制作一个API

以下是我的配置文件:

# 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命令和帖子更新的路由