0

我正在显示该类别中具有有效日期的所有帖子,如下所示 -

<?php $blog = $pages->find('posts');
     foreach($blog->children() as $blogpost): ?>
     <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat): ?>
              //HTML for displaying post goes here
         <?php endif ?>
     <?php end foreach ?>

当这些帖子验证我的情况时,这很好用,如果没有,则不显示任何内容。我想要做的是在没有符合条件的帖子时显示错误消息(例如“这里没有帖子”)。我不能只在那个查询中做一个简单的else条件,因为它在循环内。我无法将查询带出循环,因为它依赖于定义为它一部分的变量 ( )。ifforeachifforeach$blogpost

有点卡在这个catch 22中......有什么建议吗?

4

3 回答 3

2

怎么样...

 <?php
 $blog = $pages->find('posts');
 $found_something = false;
 foreach($blog->children() as $blogpost) {
   if ($blogpost->title() <= $latest && $blogpost->category == $thisCat) {
      $found_something = true;
      //HTML for displaying post goes here
   }
 }
 if(!$found_something) {
   // display error message
 }
 ?>

顺便说一句,您使用替代 PHP 语法是否有特定原因?

于 2013-09-09T19:24:03.207 回答
0

我会创建一个计数器变量,每次显示帖子时都会递增。

<?php $blog = $pages->find('posts');
      $displayedPosts = 0;
     foreach($blog->children() as $blogpost): ?>
     <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat):
             $displayedPosts++; ?>
              //HTML for displaying post goes here
         <?php endif ?>
     <?php end foreach ?>
<?php
  if ($displayedPosts == 0) {
    echo 'ERROR!';
  }
?>

在这种情况下,使用布尔变量(如 tmh 所做的)可能会更好,除非您想计算帖子数。

于 2013-09-09T19:23:19.500 回答
0

只计算你的帖子,如果它是 0 只显示消息,否则执行 foreach 循环:

  <?php $blog = $pages->find('posts');

 if(count($blog->children())==0){ echo 'No post Here'; } 

 else{

   foreach($blog->children() as $blogpost): ?>
   <?php if ($blogpost->title() <= $latest && $blogpost->category == $thisCat): ?>
          //HTML for displaying post goes here
       <?php endif ?>
   <?php end foreach ?>

<?php } ?> 
于 2013-09-09T19:27:28.940 回答