Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

XML retorna apenas o ultimo curso

Quando debugo a $cursos, ele me mostra todos os meus cursos, mas no resultado final ele só me mostra o ultimo curso do meu repositório, é como se ele estivesse inserindo na mesma tag e sobrepondo ela

<?php

namespace Alura\Cursos\Controller;

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

class CursosEmXml implements RequestHandlerInterface
{
    private $repositorioDeCursos;

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

    public function handle(ServerRequestInterface $request) : ResponseInterface
    {
        $cursos = $this->repositorioDeCursos->findAll();
        $cursosEmXml = new \SimpleXMLElement('<cursos/>');
        echo '<pre>';print_r($cursos);echo '</pre>';
        foreach ($cursos as $key => $curso) {
            $cursosEmXml = $cursosEmXml->addChild('curso');
            $cursosEmXml->addChild('id', $curso->getId());            
            $cursosEmXml->addChild('descricao', $curso->getDescricao());
        }
        return new Response(200, [], $cursosEmXml->asXML());
    }
}
1 resposta
solução!

Fala, Nelio. Beleza?

A cada iteração do loop você tá sobrescrevendo a variável $cursosEmXml. Por isso só exibe o último. ;-)