1
resposta

[Bug] Não exibe o resultado em XML

Segue am anexo a foto do resultado do meu XML, e ó código:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

<?php

namespace Alura\Cursos\Controller;

use SimpleXMLElement;
use Nyholm\Psr7\Response;
use Alura\Cursos\Entity\Curso;
use Doctrine\Persistence\ObjectRepository;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class CursosEmXml implements RequestHandlerInterface
{
    /**
     * @var ObjectRepository
     */
    private $repositorioDeCursos;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->repositorioDeCursos = $entityManager
        ->getRepository(Curso::class);
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        /** @var Curso[] $cursos */
        $cursos = $this->repositorioDeCursos->findAll();
        $cursosEmXml = new \SimpleXMLElement('<cursos/>');

        foreach ($cursos as $curso) {
            $cursoEmXml = $cursosEmXml->addChild('curso');
            $cursoEmXml->addChild('id', $curso->getId());
            $cursoEmXml->addChild('descricao', $curso->getDescricao());
        }

        return new Response(
            200,
            ['Content-Type' => 'application/xml'],
            $cursosEmXml->asXML()
        );
    }
}

1 resposta

Olá, Tales. Tudo bem?

Desculpa por demorar em responder a sua dúvida.

Analisando o código da classe CursosEmXml, parece que está tudo certinho.

Na classe Curso, no método jsonSerialize() especifique o tipo de retorno para mixed, conforme o código abaixo:

    public function jsonSerialize():mixed
    {
        return [
            'id' => $this->id,
            'descricao' => $this->descricao
        ];
    }

Se não funcionar, você poderia disponibilizar seu código para eu analisar?

Desde já agradeço, fico no aguardo e bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓