Api Platform - Symfony - вернуть JSON в постоянном режиме - PullRequest
0 голосов
/ 22 марта 2019

Мне нужно было вернуть JsonResponse внутри сохраняемой функции.

это пример моего класса DataPersister, целью которого является возвращение JsonResponse, при попытке получить сообщение об ошибке: контроллер должен вернуть объект \ "Symfony \ Component \ HttpFoundation \ Response \", но он возвратил объект типа App \ Entity \ 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');
    }
}

Пожалуйста, помогите мне или скажите, что я могу сделать, чем вы

1 Ответ

2 голосов
/ 22 марта 2019

Если вы хотите, чтобы класс App\Entity\Users был преобразован в JSON, вы можете реализовать JsonSerializable inferface (это собственный интерфейс PHP).Этот интерфейс заставляет вас реализовать метод jsonSerialized, который автоматически вызывается при преобразовании объекта в json (например, когда вы используете 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...