From ffea0dfbe1dfa5f5caae0870ee8fea954967bdf5 Mon Sep 17 00:00:00 2001
From: Kenneth Ezekiel <88850771+KenEzekiel@users.noreply.github.com>
Date: Mon, 2 Oct 2023 13:33:27 +0700
Subject: [PATCH] feat: Layouting

---
 src/base/BaseController.php        | 16 +++++++--
 src/controllers/MainController.php | 53 ++++++++++++++++++++++++++++++
 views/home.php                     |  5 +++
 views/layouts/base.php             | 27 ++++++++++++++-
 4 files changed, 98 insertions(+), 3 deletions(-)
 create mode 100644 src/controllers/MainController.php
 create mode 100644 views/home.php

diff --git a/src/base/BaseController.php b/src/base/BaseController.php
index 44cd8a5..5de245a 100644
--- a/src/base/BaseController.php
+++ b/src/base/BaseController.php
@@ -43,7 +43,19 @@ abstract class BaseController
 
   public function handle($method, $urlParams)
   {
-    $lowMethod = strtolower($method);
-    echo $this->$lowMethod($urlParams);
+    $to_lower_method = strtolower($method);
+    echo $this->$to_lower_method($urlParams);
+  }
+
+  protected static function render($data, $view, $layout)
+  {
+    extract($data);
+    ob_start();
+    include_once __DIR__ . "/../../views/{$view}.php";
+    $content = ob_get_clean();
+
+    $data["__content"] = $content;
+    extract($data);
+    include_once __DIR__ . "/../../views/{$layout}.php";
   }
 }
diff --git a/src/controllers/MainController.php b/src/controllers/MainController.php
new file mode 100644
index 0000000..5afc191
--- /dev/null
+++ b/src/controllers/MainController.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace app\controllers;
+
+use app\base\BaseController;
+use app\exceptions\MethodNotAllowedException;
+use Exception;
+
+class MainController extends BaseController
+{
+
+  protected function __construct()
+  {
+    parent::__construct(null);
+  }
+
+  protected function get($urlParams)
+  {
+    try {
+      // parent::get($urlParams);
+
+      // echo "params is ";
+      // var_dump($urlParams);
+      parent::render($urlParams, "home", "layouts/base");
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function post($urlParams)
+  {
+    try {
+      parent::put($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function put($urlParams)
+  {
+    try {
+      parent::put($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function delete($urlParams)
+  {
+    try {
+      parent::delete($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+}
diff --git a/views/home.php b/views/home.php
new file mode 100644
index 0000000..86f9f54
--- /dev/null
+++ b/views/home.php
@@ -0,0 +1,5 @@
+<div>
+  <h1>
+    HOME
+  </h1>
+</div>
\ No newline at end of file
diff --git a/views/layouts/base.php b/views/layouts/base.php
index a814366..3c98aee 100644
--- a/views/layouts/base.php
+++ b/views/layouts/base.php
@@ -1 +1,26 @@
-<?php
\ No newline at end of file
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <!-- <link rel="stylesheet" href="public/css/lib.css">
+  <link rel="stylesheet" href="public/css/shared.css">
+  <link rel="stylesheet" href="public/css/home.css"> -->
+  <!-- <title>Document</title> -->
+</head>
+
+<body>
+  <nav>
+
+  </nav>
+
+  <main>
+    <h1>hai!!!</h1>
+    <?= $__content ?>
+  </main>
+
+</body>
+
+</html>
\ No newline at end of file
-- 
GitLab