嗨,我将直接进入它。 这就是我想要的:
-
类别 A
- 项目1
- 项目2
-
B类
- 项目1
- 项目2
这就是我得到的:
- 类别 A
- 项目1
- 类别 A
- 项目2
- B类
- 项目1
- B类
- 项目2
我的代码
控制器
$_mongo = new MongoClient();
$_mongo->selectDB("data");
$articles = $_mongo->selectDB("data")->selectCollection("articles");
$articlelist = $articles->find();
$articlelist->sort(array('category' => 1));
if($articlelist->count() > 0){
foreach($articlelist as $article){
}
}
$this->view->setVar('articlelist', $articlelist);
导航栏部分
<nav class="col-xs-12 col-sm-3 sidebar-offcanvas" id="sidebar">
<div id="accordion" class="panel-group">
<div class="panel panel-default">
{% for article in articlelist %}
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse{{article['_id']}}">{{article['category']}}</a>
</h4>
</div>
<div id="collapse{{article['_id']}}" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item"><a href="{{article['uri']}}">{{article['title']}}</a></li>
</ul>
</div>
{% endfor %}
</div>
</div>
</nav>
源数据:
$post = array(
'date_created' => new MongoDate(),
'title' => $_POST['title'],
'date' => date("d/m/y h:i:sa"),
'category' => $_POST['category'],
'uri' => $category . "/" . $string, //uri generated by category and title
'content' => $_POST['content']
);
$posts->save($post);
我的想法是,我可以只做$articles->find('category')
然后单独循环,但显然这不能在像 mongo 这样的 noSQL 中完成。 我有点困惑,怎么会,最简单的方法是什么?谢谢。
1.PHP 示例
逻辑的简单表示:
$a = [
['category' => 'a', 'title' => 'Title 1'],
['category' => 'a', 'title' => 'Title 2'],
['category' => 'b', 'title' => 'Title 1'],
['category' => 'b', 'title' => 'Title 2'],
];
$currentCat = null;
foreach ($a as $article) {
if ($currentCat != $article['category']) {
print("'t" . $article['category'] . PHP_EOL);
$currentCat = $article['category'];
}
print("'t't" . $article['title'] . PHP_EOL);
}
如果结构如此平坦,但排序正确,您必须记住您所在的最后一个类别并在其更改时绘制标题。
2. 电压示例
{% set currentCat = null %}
{% for article in articlelist %}
{% if article['category'] != currentCat %}
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse{{ article['_id'] }}">{{ article['category'] }}</a>
</h4>
</div>
{% set currentCat = article['category'] %}
{% endif %}
<div id="collapse{{article['_id']}}" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item"><a href="{{article['uri']}}">{{article['title']}}</a></li>
</ul>
</div>
{% endfor %}
它是以前PHP示例的逻辑副本,刚刚用您提供的html翻译成Volt。应该工作正常,但未经测试。我在那里做的和以前一样,记住最后一个类别,如果它已经挂起,请为它绘制标题。