Как я могу получить все категории из базы данных в шапке? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть header.php, в котором у меня верхняя навигация.В этой навигации у меня есть выпадающее меню, которое дает мне все категории, которые находятся в таблице базы данных categories(id, category).

Вот часть заголовка:

<div class="dropdown">
 <button class="dropbtn">
  <a 
   href="http://localhost:8888/blog/public/index.php/categories"
   title="Categories">
      Categories
  </a>
 </button>
 <div class="dropdown-content">
  <?php foreach ($categories as $cat): ?>
   <a 
    href="http://localhost:8888/blog/public/index.php/categories/
    <?php echo e($cat['category']); ?>">
     <?php echo e($cat->category);?>
  </a>
 <?php endforeach; ?>
</div>

Следующая функция находится в моем CategoryRepository.php и получает все категории из базы данных:

public function allCategories()
{
 $table = $this->getTableName();
 $model = $this->getModelName();

 $stmt = $this->pdo->query("SELECT * FROM `$table`");
 $allCategories = $stmt->fetchAll(PDO::FETCH_CLASS, $model);
 return $allCategories;
}

Мне нужна эта функция для foreach в навигации, проблема в том, что я должен поставить следующий код:

$categories = $this->categoryRepository->allCategories();

В каждой функции контроллеров, в которой отображается новый сайт для блога;Вот пример:

public function index()
{
 $categories = $this->categoryRepository->allCategories();
 $posts = $this->postsRepository->all(); 
 $this->render("post/index", [
  'posts' => $posts,
  'categories' => $categories,
 ]);
}

Есть ли возможность, что я не обязан помещать эту строку кода в каждую функцию для нового сайта?

Я ужепытался положить его в __construct, но как-то не получилось.

1 Ответ

0 голосов
/ 04 декабря 2018
$fields = $this->db->list_fields($table); // gives you category `like(id, category,name)`

тогда вы можете управлять тем, что вам нужно,

for ($i = 0; $i < count($fields); $i++) {
   $fields[$i] = str_replace('_', ' ', $fields[$i]);
   `$fields[$i] = ucwords($fields[$i]);`
}
return array('schema' => array_values($fields));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...