У меня есть 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
, но как-то не получилось.