3
respostas

ao editar o curso não está redirecionando para listar-cursos

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.

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

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
];
3 respostas

Você está colocando um espaço após salvar-curso no seu formulario.

Era isso mesmo Vinicius, obrigado. Para salvar o curso isso não estava interferindo, porque será?

Porque nao tem nada depois de /salvar-curso

no caso de editar tem o id