Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>
tags: allow to edit a tag
app/controllers/TagsController.php | 15 +++++++++++++++ app/daos/TagDAO.php | 25 +++++++++++++++++++++++++ app/views/tag_edit.php | 20 ++++++++++++++++++++ config/routes.php | 8 ++++++++
diff --git a/app/controllers/TagsController.php b/app/controllers/TagsController.php index 82ee8c4de40c24e9fdc85cd6a7a13880693c65f3..6db785be10701fd69b2bca2086fc177d0dcd1b22 100644 --- a/app/controllers/TagsController.php +++ b/app/controllers/TagsController.php @@ -33,6 +33,21 @@ header('Location: /tags'); exit; } + public function edit($id) { + $tag = $this->tagDAO->getTagById($id); + + return Template::render('tag_edit', ['tag' => $tag]); + } + + public function update($id) { + $data = $_POST; + + $this->tagDAO->updateTag($id, $data['name']); + + header('Location: /tags'); + exit; + } + public function destroy($id) { $this->tagDAO->delete($id); diff --git a/app/daos/TagDAO.php b/app/daos/TagDAO.php index b32edbb16d03e72939b1bca18863d3c6dc452123..440c770722e55cfe4b90f8375e5a554ca330457b 100644 --- a/app/daos/TagDAO.php +++ b/app/daos/TagDAO.php @@ -30,6 +30,21 @@ return []; } } + public function getTagById($id) { + $sql = 'SELECT * FROM tags WHERE id = :id'; + $stmt = $this->db->prepare($sql); + $stmt->bindParam(':id', $id); + $stmt->execute(); + + $tagData = $stmt->fetch(PDO::FETCH_OBJ); + + if ($tagData) { + return new Tag($tagData->id, $tagData->name); + } else { + return null; + } + } + public function save(Tag $tag) { $sql = "INSERT INTO tags (name) VALUES (:name)"; $stmt = $this->db->prepare($sql); @@ -37,6 +52,16 @@ $stmt->bindValue(':name', $tag->getName()); $stmt->execute(); } + + public function updateTag($id, $name) { + $sql = 'UPDATE tags SET name = :name WHERE id = :id'; + $stmt = $this->db->prepare($sql); + $stmt->bindParam(':name', $name); + $stmt->bindParam(':id', $id); + + return $stmt->execute(); + } + public function delete($id) { $sql = "DELETE FROM tags WHERE id = :id"; diff --git a/app/views/tag_edit.php b/app/views/tag_edit.php new file mode 100644 index 0000000000000000000000000000000000000000..ced5f1538f04c82d8fdfb4127da91f15a20b2d00 --- /dev/null +++ b/app/views/tag_edit.php @@ -0,0 +1,20 @@ +<div class="container mx-auto mt-10"> + <h1 class="text-2xl font-bold text-gray-700 mb-6">Editar Tag</h1> + + <form action="/tags/edit/<?= $tag->getId() ?>" method="POST"> + <div class="mb-4"> + <label for="name" class="block text-sm font-medium text-gray-700">Nome</label> + <input type="text" id="name" name="name" value="<?= htmlspecialchars($tag->getName()) ?>" + class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" required /> + </div> + + <div class="flex items-center space-x-4"> + <button type="submit" class="bg-blue-600 text-white py-2 px-4 rounded hover:bg-blue-700"> + Atualizar Tag + </button> + + <a href="/tags" class="bg-gray-600 text-white py-2 px-4 rounded hover:bg-gray-700">Voltar</a> + </div> + </form> +</div> + diff --git a/config/routes.php b/config/routes.php index 732e1588f1d35ecf5c2f11ee5eee0246c08abde8..dfd8f161435c39ae55557cedc818fe1b59fae0c7 100644 --- a/config/routes.php +++ b/config/routes.php @@ -67,6 +67,14 @@ // POST /tags/create } elseif ($uri === 'tags/create' && $method === 'POST') { return (new TagsController())->store(); + // GET /tags/edit/{id} + } elseif (preg_match('/^tags\/edit\/(\d+)$/', $uri, $matches) && $method === 'GET') { + return (new TagsController())->edit($matches[1]); + + // POST /tags/edit/{id} + } elseif (preg_match('/^tags\/edit\/(\d+)$/', $uri, $matches) && $method === 'POST') { + return (new TagsController())->update($matches[1]); + // GET /tags/delete/{id} } elseif (preg_match('/^tags\/delete\/(\d+)$/', $uri, $matches) && $method === 'GET') { return (new TagsController())->destroy($matches[1]);