【问题标题】:How can I get all categories from the database in the header?如何从标题中的数据库中获取所有类别?
【发布时间】: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 我没有使用任何模板

标签: php database render


【解决方案1】:
$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));

【讨论】:

  • 可以获取所有表字段名
  • 请解释代码的作用,以及它如何解决原始问题。请在答案中而不是在评论部分这样做,以便其他人可以从您的答案中学习
  • 我应该把它放在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 2011-02-16
相关资源
最近更新 更多