首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >symfony SerializerInterface序列化程序参数

symfony SerializerInterface序列化程序参数
EN

Stack Overflow用户
提问于 2017-06-23 22:43:10
回答 2查看 1.5K关注 0票数 1

我使用的是symfony 3.3的最新版本

我试图返回json,但得到一个错误

这是我的控制器:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Serializer\SerializerInterface;

class ApiController extends Controller{
    /**
     * @Route("home", name="api_home")
     */
    public function indexAction(SerializerInterface $serializer)
    {
        $entity = $this->getDoctrine()
            ->getRepository('AppBundle:User')
            ->findAll();
        $json = $serializer->serialize($entity,'json', ['groups' => ['User']]);
        return new JsonResponse($json, 200, [], true);
    }
}

在services.yml上:

代码语言:javascript
代码运行次数:0
运行
复制
services:
  _defaults:
      public: false
      autowire: false
      autoconfigure: true

config.yml

代码语言:javascript
代码运行次数:0
运行
复制
serializer:
    enabled: true
    enable_annotations: true

我收到错误消息:

代码语言:javascript
代码运行次数:0
运行
复制
Controller "AppBundle\Controller\ApiController::indexAction()" requires that you provide a value for the "$serializer" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.

我试着在$json之前死掉

但同样的错误

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-23 22:51:18

action方法可以通过请求转换请求属性或参数(您需要的服务应该从容器中检索),因此请尝试以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * @Route("home", name="api_home")
 */
public function indexAction()
{
    $serializer = $this->get('serializer');
    $entity = $this->getDoctrine()
        ->getRepository('AppBundle:User')
        ->findAll();
    $json = $serializer->serialize($entity,'json', ['groups' => ['User']]);
    return new JsonResponse($json, 200, []);
}

希望这对你有所帮助

票数 0
EN

Stack Overflow用户

发布于 2017-06-23 23:09:59

它的发生只是因为我在services.yml上没有这个

代码语言:javascript
代码运行次数:0
运行
复制
  AppBundle\Controller\:
        resource: '../../src/AppBundle/Controller/*'
        public: true
        tags: ['controller.service_arguments']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44724202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档