Api平台 - Symfony - 在持久化函数中返回json
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Api平台 - Symfony - 在持久化函数中返回json相关的知识,希望对你有一定的参考价值。
我需要在persist函数内返回一个Json Response。
这是我的DataPersister类的一个例子,它的目标是返回一个JsonResponse,当我尝试时,我得到错误:控制器必须返回一个“Symfony Component HttpFoundation Response ”对象,但它返回了一个App类型的对象实体 VerificationCodes。
<?php
// api/src/DataPersister/UsersDataPersister.php
namespace AppDataPersister;
use ApiPlatformCoreDataPersisterDataPersisterInterface;
use AppEntityUsers;
use DoctrineCommonPersistenceManagerRegistry;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationJsonResponse;
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');
}
}
请帮助我或告诉我我能做什么比你
答案
如果你想将AppEntityUsers
类转换为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);
以上是关于Api平台 - Symfony - 在持久化函数中返回json的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 4 API 平台和 JWT:如何使用 Symfony 客户端项目登录 API?
使用带有 api 平台和 symfony 的转换器时,GET 结果为空