#php #symfony #serialization #normalization
#php #symfony #сериализация #нормализация
Вопрос:
У меня есть объект «Cliente», который имеет вложенный объект (среди других полей) с именем «Responsavel», а затем внутри него другой объект с именем «usuario». Я создаю пользовательский нормализатор, чтобы возвращать данные для меня в виде json, у меня есть это до сих пор:
public function normalize($cliente, $format = null, array $context = [])
{
// $data = $this->normalizer->normalize($cliente, $format, $context);
$data['clienteId'] = $cliente->getId();
$data['clienteCodigo'] = $cliente->getCodigo();
$data['clienteRazao'] = $cliente->getRazao();
$data['clienteRegistro'] = $cliente->getRegistro();
$data['responsaveis']= [];
$responsaveis = $cliente->getResponsavel();
foreach($responsaveis as $responsavel){
array_push($data['responsaveis'],$this->normalizer->normalize($responsavel, $format, [AbstractNormalizer::ATTRIBUTES => ['id', 'competenciaInicial','ativo', 'usuario']]));
}
return $data;
}
Я использую AbstractNormalizer, чтобы указать, какое поле я хочу вернуть, но когда я добираюсь до ‘usuario’, я не знаю, как вызывать нужные мне АТРИБУТЫ внутри него, например, usuario [‘id’] . Я нашел это в git symfony
/** * Ограничить (де) нормализацию указанными именами. * * Для вложенных структур этот список должен отражать дерево объектов. */
Как я могу этого добиться? Спасибо!
Ответ №1:
Нашел его, выбрав определенные атрибуты!
При выборе атрибутов из вложенного объекта вы должны делать это следующим образом [AbstractNormalizer::ATTRIBUTES => ['flatAttr', 'nestedOject'=>['flatAttrFromNestedObj']]]