Bom dia Vinicius,
Fiz o desafio que você propôs na aula e ocorre que toda resposta que eu retorno em qualquer uma das controllers é exibido o erro abaixo, não consegui resolver esse erro.
Fatal error: Uncaught InvalidArgumentException: Header name must be an RFC 7230 compatible string. in C:\Users\User\gerenciador-de-cursos\vendor\nyholm\psr7\src\MessageTrait.php:174 Stack trace: #0 C:\Users\User\gerenciador-de-cursos\vendor\nyholm\psr7\src\MessageTrait.php(141): Nyholm\Psr7\Response->validateAndTrimHeader('Location:', '/listar-cursos') #1 C:\Users\User\gerenciador-de-cursos\vendor\nyholm\psr7\src\Response.php(48): Nyholm\Psr7\Response->setHeaders(Array) #2 C:\Users\User\gerenciador-de-cursos\src\Controller\Exclusao.php(47): Nyholm\Psr7\Response->__construct(302, Array) #3 C:\Users\User\gerenciador-de-cursos\public\index.php(51): Alura\Cursos\Controller\Exclusao->handle(Object(Nyholm\Psr7\ServerRequest)) #4 {main} thrown in C:\Users\User\gerenciador-de-cursos\vendor\nyholm\psr7\src\MessageTrait.php on line 174<?php
namespace Alura\Cursos\Controller;
use Alura\Cursos\Entity\Curso;
use Alura\Cursos\Helper\FlashMessageTrait;
use Doctrine\ORM\EntityManagerInterface;
use Nyholm\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
class Persistencia implements RequestHandlerInterface
{
use FlashMessageTrait;
/**
* @var \Doctrine\ORM\EntityManagerInterface
*/
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function handle(ServerRequestInterface $request): ResponseInterface
{
$descricao = filter_var(
$request->getParsedBody()['descricao'],
FILTER_SANITIZE_STRING
);
if(isset($request->getQueryParams()['id'])) {
$id = filter_var(
$request->getQueryParams()['id'],
FILTER_VALIDATE_INT
);
}else{
$id = null;
}
$curso = new Curso();
$curso->setDescricao($descricao);
//para atualizar é feito um merge com o que estou passando e o que temos no banco.
if (!is_null($id) && $id !== false) {
$curso->setId($id);
$this->entityManager->merge($curso);
$this->defineMensagem("success", "Curso alterado com sucesso!");
} else {
$this->entityManager->persist($curso);
$this->defineMensagem("success", "Curso inserido com sucesso!");
}
$this->entityManager->flush();
return new Response(302,['Location:' => '/listar-cursos']);
}
}