Я отправляю запрос на получение http со стороны angular на symfony, чтобы получить подробные сведения о команде, у меня много вложенных json объектов и круговых ссылок, я пытаюсь установить MaxDepth для связанной сущности и в качестве документации jms сказал добавить эту строку
$serializer->serialize($command, 'json', SerializationContext::create()->enableMaxDepthChecks());
, чтобы создать контекст сериализатора и включить свойство maxDepth
Это моя сущность
<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\MaxDepth;
/**
* @ORM\Entity(repositoryClass="App\Repository\CommandRepository")
*/
class Command
{
/**
* @ORM\Id()
* @ORM\Column(type="string", length=255)
*/
private $id;
/**
* @ORM\Column(type="float")
*/
private $price;
/**
* @ORM\Column(type="text")
*/
private $adresse;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="commands")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
*/
private $user;
/**
* @ORM\OneToMany(targetEntity="App\Entity\CommandLine", mappedBy="command")
*/
private $commandLines;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GiftCheck", mappedBy="command")
* @MaxDepth(1)
*/
private $giftChecks;
Метод сведений о команде
/**
* Get Commands.
* @Rest\Get("/CommandDetails/{id}")
* @param Request $request
* @return View
*/
public function CommandDetails( Request $request,$id)
{
$entityManager = $this->getDoctrine()->getManager();
$command = $this->getDoctrine()->getRepository(Command::class)->find($id);
$command-> setUser($this->getUserDetails( $command-> getUser() ) );
$serializer->serialize($command, 'json', SerializationContext::create()->enableMaxDepthChecks());
return $this->handleView($this->view($command));
}
кажется нормальным, что сервер выдает ошибку 500, потому что не знает переменную $ serializer, потому что она не инициализирована, я не нашел, как инициализировать эта переменная форма какой интерфейс! нужна помощь, пожалуйста?
по ссылке ссылка