每3列的Bootstrap行类

Ale*_*Kim 8 twitter-bootstrap laravel laravel-4 twitter-bootstrap-3

我想使用bootstrap 3主题使用寻呼机打印12篇文章:

@foreach($category->articles()->orderBy('created_at', 'DESC')->paginate(12) as $article)

<div class="col-md-4">
<a href="/article/{{ $article->slug }}"><img class="img-responsive" src="/imagecache/mainart/{{ $article->image }}" /></a>
<p>{{ strip_tags(str_limit($article->body, $limit = 90, $end = '...')) }}</p>
</div><!--/col-md-4-->

@endforeach
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用类"row"打印div,其中包含3列.

array_chunk()
Run Code Online (Sandbox Code Playgroud)

不会在我的情况下工作,因为我打印类别相关的文章(一对多关系)和它的对象,而不是数组.

Lau*_*nce 10

你有两个选择.

  1. 使用array_chunk()首先将你的结果到一个数组
  2. 使用自定义函数break_array(),它允许您array_chunk()对对象执行相同的操作

选项1:

@foreach (array_chunk($category->articles()->orderBy('created_at', 'DESC')->paginate(12)->toArray()['data'], 3, true) as $column)
      <div class="row">
          @foreach ($column as $article)
              <div class="col-md-4">
                  <p>{{ strip_tags(str_limit($article['body'], $limit = 90, $end = '...')) }}</p>
              </div
          @endforeach
      </div>
@endforeach
Run Code Online (Sandbox Code Playgroud)

选项2:

将它放在应用程序某处的辅助函数中:

function break_array($array, $page_size) {

  $arrays = array();
  $i = 0;

  foreach ($array as $index => $item) {
    if ($i++ % $page_size == 0) {
      $arrays[] = array();
      $current = & $arrays[count($arrays)-1];
    }
    $current[] = $item;
  }

  return $arrays; 
}
Run Code Online (Sandbox Code Playgroud)

然后在你看来:

@foreach (break_array($category->articles()->orderBy('created_at', 'DESC')->paginate(12), 3) as $column)
      <div class="row">
          @foreach ($column as $article)
              <div class="col-md-4">
                  <p>{{ strip_tags(str_limit($article->body, $limit = 90, $end = '...')) }}</p>
              </div
          @endforeach
      </div>
@endforeach
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 7

row如果计数为0或者可以被3整除,则创建一个计数变量并回显一个新变量.我从下面的示例中删除了大部分代码,您将不得不添加foreach循环和div内容.

    <?php 
    $count = 0;

    { //foreach as shown in question

        if($count==0 OR is_int($count/3)){
            echo '<div class="row">';
        } ?>

        <div class="col-md-4">
            <!--content-->
        </div>

        <?php if($count==0 OR is_int($count/3)){
            echo '</div>';
        }

        $count++;
    } //end foreach
?>
Run Code Online (Sandbox Code Playgroud)