Sem problemas para salvar curso novo, quando clico no botão editar direciona certinho e traz o nome do curso que quero editar, mas quando clico em salvar está direcionando para salvar-curso não está salvando a alteração e não está redirecionando para listar-cursos.
O método FILTER_SANITIZE_STRING foi descontinuado, utilizei o método strip_tags e funcionou bem. O método merge também foi descontinuado, Segui a solução indicada em outro tópico, mas o erro persistiu.
SalvarCursos
<?php
namespace Alura\Cursos\Controller;
use Alura\Cursos\Entity\Curso;
use Alura\Cursos\Infra\EntityManagerCreator;
class SalvarCurso implements InterfaceControladorRequisicao
{
private $entityManager;
public function __construct()
{
$this->entityManager = (new EntityManagerCreator())->getEntityManager();
}
public function processaRequisicao(): void
{
$descricao = filter_input(INPUT_POST, 'descricao');
$filtroDescricao = strip_tags($descricao);
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!is_null($id) && $id !== false) {
$curso = $this->entityManager->find(Curso::class, $id);
$curso->setDescricao($filtroDescricao);
} else {
$curso = new Curso();
$curso->setDescricao($filtroDescricao);
$this->entityManager->persist($curso);
}
$this->entityManager->flush();
header("Location: /listar-cursos");
}
}
formulario
<?php include __DIR__ . '/../header.php' ; ?>
<form action="/salvar-curso <?= isset($curso) ? '?id=' . $curso->getId() : ''; ?>" method="POST">
<div class="form-group">
<label for="descricao">Descricao</label>
<input type="text" class="form-control" id="descricao" name="descricao"
value="<?= isset($curso) ? $curso->getDescricao() : ''; ?>">
</div>
<button class="btn btn-primary my-2">Salvar</button>
</form>
<?php include __DIR__ . '/../footer.php' ; ?>
routes
<?php
use Alura\Cursos\Controller\{FormularioInsercao, ListarCursos, SalvarCurso, ExcluirCurso, EditaCurso};
// Cria rotas para passarpara index.php
return [
'/listar-cursos' => ListarCursos::class,
'/novo-curso' => FormularioInsercao::class,
'/salvar-curso' => SalvarCurso::class,
'/excluir-curso' => ExcluirCurso::class,
'/editar-curso' => EditaCurso::class
];