Api平台 - Symfony - 在持久化函数中返回json

问题描述 投票:0回答:1

我需要在persist函数内返回一个Json Response。

这是我的DataPersister类的一个例子,它的目标是返回一个JsonResponse,当我尝试时,我得到错误:控制器必须返回一个\“Symfony \ Component \ HttpFoundation \ Response \”对象,但它返回了一个App类型的对象\实体\ VerificationCodes。

<?php
// api/src/DataPersister/UsersDataPersister.php

namespace App\DataPersister;

use ApiPlatform\Core\DataPersister\DataPersisterInterface;
use App\Entity\Users;
use Doctrine\Common\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;

final class UsersDataPersister implements DataPersisterInterface 
{    
    private $managerRegistry;

    public function __construct(ManagerRegistry $managerRegistry)
    {
      $this->managerRegistry = $managerRegistry;
    }


    public function supports($data): bool
    {
        return $data instanceof Users;
    }

    public function persist($data){
        $em = $this->managerRegistry->getManagerForClass(Users::class);
        $user = new Users();
        //Persist User with encode password
        return $user;
        return new JsonResponse(['response'=>'yes']);
    }


    public function remove($data)
    {
      throw new \RuntimeException('"remove" is not supported');
    }
}

请帮助我或告诉我我能做什么比你

php symfony
1个回答
2
投票

如果你想将App\Entity\Users类转换为JSON,你可以实现JsonSerializable inferface(是PHP本机接口)。此接口强制您实现在将对象转换为json时自动调用的方法jsonSerialized(例如,当您使用json_encode($user);时)。

最后你可以试试

class Users implements \JsonSerializable
{
    public function jsonSerialize()
    {
        return []; // an array representation of your class
    }
}

然后你可以 ...

return new JsonResponse(json_encode($user));

或者可能) ...

return new JsonResponse($user);
© www.soinside.com 2019 - 2024. All rights reserved.