我有一个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();
在Controller中的每个函数中,都会为博客提供一个新的站点;这是一个例子:
public function index()
{
$categories = $this->categoryRepository->allCategories();
$posts = $this->postsRepository->all();
$this->render("post/index", [
'posts' => $posts,
'categories' => $categories,
]);
}
是否有可能我没有被迫将此代码行放在新站点的每个函数中?
我已经尝试将其放在__construct
中,但是不知何故。
答案 0 :(得分:0)
$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));