Обнаружена циклическая ссылка (настроено ограничение: 1) Сериализатор SYMFONY

Здравствуйте, в моем проекте Symfony я хочу преобразовать мою сущность в массив Json, поэтому я выбираю сериализатор для make, а также я хочу игнорировать некоторые атрибуты, потому что преобразование слишком длинное, поэтому я прочитал документацию Symfony http://symfony.com/doc/current/components/serializer.html, и я копирую этот код

 $flowsites =    $this->getDoctrine()->getRepository("QSCORBundle:Flow_Site")->findAll();
 $normalizer = new ObjectNormalizer();
 $normalizer->setIgnoredAttributes(array('company')); 
 $encoder = new JsonEncoder();

 $serializer = new Serializer(array($normalizer), array($encoder));
 $flow_sites = $serializer->serialize($flow_sites, 'json');

 var_dump( $flow_sites );
 die();

после этого генерируется ошибка. Обнаружена циклическая ссылка (настроено ограничение: 1), поэтому для решения этой проблемы я внесу некоторые изменения в свой код

$normalizer = new ObjectNormalizer(null);
$normalizer->setIgnoredAttributes(array('company', 'origin'));
$normalizer->setCircularReferenceHandler(function ($object) {
    return $object->getId();
});
$encoder = new JsonEncoder();
//$serializer = $this->get('serializer');
$serializer = new Serializer(array($normalizer), array($encoder));

$flowsites = $this->getDoctrine()->getRepository("QSCORBundle:Flow_Site")->findAll();
$jsonflowsites =  $serializer->serialize( $flowsites, 'json');
var_dump( $jsonflowsites );
die();

0 ответов

Другие вопросы по тегам