【发布时间】:2019-05-05 15:59:20
【问题描述】:
我有一个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,但不知何故它不起作用。
【问题讨论】:
-
你在使用 Symfony 吗?
-
否;我在教程中制作了自己的框架
-
您的模板使用什么引擎?枝条?几天前我想知道如何像你一样做同样的事情,但是使用 symfony,然后我在 symfony 的文档中找到了“嵌入控制器”。简而言之 - 渲染控制器:模板文件中的操作。
-
@D.Dimitrov 我没有使用任何模板