2014-10-21 00:53

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')

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

        foreach($article_result as $article) {
            $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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • dongzhucha3999 dongzhucha3999 7年前

    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')
        return View::make('Home/blog')->with(array(     
                    'articles' => $article_result

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

    @foreach($articles as $article)

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

    点赞 评论 复制链接分享