1
resposta

[Sugestão] Minha implementação de remover a capa do vídeo

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>
1 resposta

Olá, Pedro, tudo bem?

A sua solução para o desafio da capa parece estar bem organizado e estruturado! Parabéns pelo desenvolvimento :)

Agradeço por compartilhar essa solução aqui conosco :)

Bons estudos!