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