Laravel View :: Make仅使用foreach循环的第一次迭代

Using laravel 4 to make a blog concept. When trying to load an array of views with dynamic content, the framework seems to be returning the first per-rendered view rather than regenerate it with the new contents.

I build an array of calls to View::make with partials (Article/partials/article) and compacted arrays of data(articles from model)

This is then simply looped over and echoed in another view, Home/blog

public function get_articles($total) {
        $article_result = 
            Article::orderBy('created_at', 'desc')
                    ->limit($total)
                    ->get();

        $article_data = array(
            'article' => array(),
        );

        foreach($article_result as $article) {
            var_dump($article->id);
            $article_data['article'][] = View::make('Article/partials/article', compact('article'));
        }

        return View::make('Home/blog', compact('article_data'));
    }

All of my articles are there, as this is what prints from the var_dump in the controller's loop

int 6

int 5

int 4

int 3

int 1

5 five 5 five 5 five 5 five 5 five

It's much better to simply pass $article_result to your view Home/blog, and loop over them from within the view. You can call the partial view there, and it will have access to each $article during the loop.

So, in your controller, just call the Home/blog view:

public function get_articles($total) {
    $article_result = Article::orderBy('created_at', 'desc')
                ->limit($total)
                ->get();

    return View::make('Home/blog')->with(array(     
                'articles' => $article_result
                ));
}

...and in the view, loop over the articles.

@foreach($articles as $article)
    @include('Article/partials/article')
@endforeach

Within Article/partials/article, just reference $article and you're all set.