From c2428b3a8f97ff3a5c125944ac2b6aee9b081734 Mon Sep 17 00:00:00 2001 From: filippo.bertilotti <filippobertilotti@gmail.com> Date: Tue, 28 May 2024 12:00:57 +0200 Subject: [PATCH] aggiunta metodo set per la dipendeza Viewer (parte 150) --- src/App/Controllers/products.php | 125 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 116 insertions(+), 9 deletions(-) diff --git a/src/App/Controllers/products.php b/src/App/Controllers/products.php index 813808c..44e61d0 100644 --- a/src/App/Controllers/products.php +++ b/src/App/Controllers/products.php @@ -1,25 +1,132 @@ <?php namespace App\Controllers; use App\Models\Product; +use Framework\Exceptions\PageNotFoundException; use Framework\Viewer; -class Products { +use Framework\Controller; +class Products extends Controller { + + public function __construct(private Product $model) { } public function index() { + + $products = $this->model->findAll(); - $model = new Product; - $products = $model->getData(); - - $viewer = new Viewer; - $viewer->render("products_index.php", [ - "products"=> $products + echo $this->viewer->render("shared/header.php"); + echo $this->viewer->render("Products/index.php", [ + "products"=> $products, + "total" => $this->model->getTotal() ]); } public function show(string $id) { - var_dump($id); - require "views/products_show.php"; + $product = $this->getProduct($id); + + echo $this->viewer->render("shared/header.php"); + echo $this->viewer->render("Products/show.php", [ + "product"=> $product + ]); + } + + public function edit(string $id) { + $product = $this->getProduct($id); + + echo $this->viewer->render("shared/header.php", [ + "title"=> "Edit product" + ]); + echo $this->viewer->render("Products/edit.php", [ + "product"=> $product + ]); } public function showPage(string $title, string $id, string $page) { echo $title, " ", $id, " ", $page; } + + public function new() { + echo $this->viewer->render("shared/header.php", [ + "title" => "New Product" + ]); + echo $this->viewer->render("Products/new.php"); + } + + public function create() { + $data = [ + "name" => $this->request->post["name"], + "description" => empty($this->request->post["description"]) ? null : $this->request->post["description"] + ]; + + if($this->model->insert($data)) { + header("Location: /products/{$this->model->getInsertID()}/show"); + exit; + } else { + echo $this->viewer->render("shared/header.php", [ + "title" => "New Product" + ]); + + echo $this->viewer->render("Products/new.php", + ["errors" => $this->model->getErrors(), + "product" => $data + ]); + }; + } + + public function update(string $id) { + + $product = $this->getProduct($id); + + + $product["name"] = $this->request->post["name"]; + $product["description"] = empty($this->request->post["description"]) ? null : $this->request->post["description"]; + + if($this->model->update($id, $product)) { + header("Location: /products/{$id}/show"); + exit; + } else { + echo $this->viewer->render("shared/header.php", [ + "title" => "Edit Product" + ]); + + echo $this->viewer->render("Products/edit.php", [ + "errors" => $this->model->getErrors(), + "product"=> $product + ]); + }; + } + + public function getProduct(string $id): array { + $product = $this->model->find($id); + if( $product == false ) { + throw new PageNotFoundException("Product not found"); + } + return $product; + } + + public function delete(string $id) { + $product = $this->getProduct($id); + + if($_SERVER["REQUEST_METHOD"] === "POST") { + $this->model->delete($id); + header("Location: /products/index"); + exit; + } + + echo $this->viewer->render("shared/header.php", [ + "title" => "Delete Product" + ]); + + echo $this->viewer->render("Products/delete.php", [ + "product" => $product + ]); + } + + public function destroy(string $id) { + $product = $this->getProduct($id); + + + $this->model->delete($id); + header("Location: /products/index"); + exit; + } + + } \ No newline at end of file -- Gitblit v1.8.0