Kaynağa Gözat

Отображение списка постов

Alexander Musikhin 2 yıl önce
ebeveyn
işleme
6e8ea0d175

+ 23 - 3
app/controllers/controller_main.php

@@ -13,9 +13,10 @@ class controller_main extends Controller
 
     function index()
     {
-        include 'app/models/model_user.php';
-        $users_model = new Model_user();
-        $data['users'] = $users_model->get_users();
+
+
+        $data['users'] = $this->get_users();
+
         $data['posts'] = $this->model->get_posts();
 
 
@@ -29,4 +30,23 @@ class controller_main extends Controller
         }
         header('Location: /');
     }
+
+    public function post($id){
+        if(!$id) Route::ErrorPage404();
+        $data['post'] = $this->model->get_post($id);
+        $data['users'] = $this->get_users();
+        var_dump($data);
+
+    }
+
+    private function get_users(): array
+    {
+        include 'app/models/model_user.php';
+        $users_model = new Model_user();
+        $users = $users_model->get_users();
+        $ret = [];
+        foreach ($users as $u)
+            $ret[$u['id']] = $u['login'];
+        return $ret;
+    }
 }

+ 13 - 1
app/core/route.php

@@ -9,6 +9,7 @@ class Route
         // контроллер и действие по умолчанию
         $controller_name = 'Main';
         $action_name = 'index';
+        $param1 = $param2 = null;
 
         $routes = explode('/', $_SERVER['REQUEST_URI']);
 
@@ -24,6 +25,17 @@ class Route
             $action_name = $routes[2];
         }
 
+        // получаем параметр 1
+        if ( !empty($routes[3]) )
+        {
+            $param1 = $routes[3];
+        }
+
+        // получаем параметр 2
+        if ( !empty($routes[4]) )
+        {
+            $param1 = $routes[4];
+        }
 
         // добавляем префиксы
         $model_name = 'Model_'.$controller_name;
@@ -65,7 +77,7 @@ class Route
         if(method_exists($controller, $action))
         {
             // вызываем действие контроллера
-            $controller->$action();
+            $controller->$action($param1);
         }
         else
         {

+ 5 - 0
app/models/model_main.php

@@ -7,6 +7,11 @@ class Model_main extends Model
         return $this->db->query($q);
     }
 
+    public function get_post($id){
+        $q = "SELECT * FROM `posts` WHERE `id` = " . $this->db->escape($id);
+        return $this->db->query($q);
+    }
+
     public function create_post($caption, $post){
         $q = "INSERT INTO `posts` SET `caption` = " . $this->db->escape($caption) .
             ", `post` = " . $this->db->escape($post) .

+ 16 - 1
app/views/main_view.php

@@ -27,7 +27,22 @@
     </div>
 </form>
 
+<? if(!empty($posts) && is_array($posts)) foreach ($posts as $post): ?>
+<div class="row my-3">
+    <div class="col-12 mb-2">
+        <span class="me-3">Автор: <strong><?=$users[$post['user_id']]; ?></strong></span>
+        <span class="me-3">Создан <? echo date('d.m.Y', strtotime($post['created_at'])); ?></span>
+        <span class="me-3">Изменён <? echo date('d.m.Y', strtotime($post['updated_at'])); ?></span>
+    </div>
+    <div class="col-12 mb-5 pb-2 border-bottom">
+        <h5><a href="/main/post/<?=$post['id']; ?>"><? echo $post['caption']; ?></a></h5>
+        <? echo mb_substr($post['post'], 0, 50); ?>
+    </div>
+
+
+</div>
 
+<? endforeach; ?>
 <?php
-var_dump($posts);
+var_dump($users);
 ?>