我需要在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');
}
}
请帮助我或告诉我我能做什么比你
如果你想将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);