Primeiro adicionando a rota:
// routes.php
# código omitido
'GET|/remover-capa' => RemoveThumbnailController::class
Controller responsável pela remoção da imagem:
<?php
namespace Alura\Mvc\Controller;
use Alura\Mvc\Repository\VideoRepository;
class RemoveThumbnailController implements Controller
{
public function __construct(private VideoRepository $videoRepository)
{
}
public function processRequest(): void
{
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (is_null($id) || $id === false) {
header('Location: /?sucesso=0');
return;
}
$success = $this->videoRepository->removeImage($id);
if ($success === false) {
header('Location: /?sucesso=0');
} else {
header('Location: /?sucesso=1');
}
}
}
Método no repositório responsável pela remoção. Basta atribuir a null
.
// VideoRepository.php
public function removeImage(int $id): bool
{
$sql = 'UPDATE videos SET image_path = NULL WHERE id = ?;';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(1, $id);
return $statement->execute();
}
Só partir pro abraço com o botão de remoção.
<div class="acoes-video">
<a href="/editar-video?id=<?= $video->id; ?>">Editar</a>
<a href="/remover-capa?id=<?= $video->id; ?>">Remover capa</a> // rota adicionada.
<a href="/remover-video?id=<?= $video->id; ?>">Excluir</a>
</div>