dongmin3754
2014-10-21 00:53
浏览 115
已采纳

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

图片转代码服务由CSDN问答提供 功能建议

使用laravel 4制作博客概念。 当尝试使用动态内容加载视图数组时,框架似乎返回第一个每个渲染的视图,而不是使用新内容重新生成它。

我构建一个调用数组 to view :: make with partials(Article / partials / article)和压缩的数据数组(来自模型的文章)

然后在另一个视图中循环播放并回显,主页/博客

  public function get_articles($ total){
 $ article_result = 
 Article :: orderBy('created_at','desc')
  - > limit($ 总计)
  - > get(); 
 
 $ article_data = array(
'article'=> array(),
); 
 
 foreach($ article_result as $ article){\  n var_dump($ article-> id); 
 $ article_data ['article'] [] = View :: make('Article / partials / article',compact('article')); 
} 
 
 
 \  n返回View :: make('Home / blog',compact('article_data')); 
} 
   
 
 

我所有的艺术作品 icles就在那里,因为这是从控制器循环中的var_dump打印出来的

int 6

int 5

int 4

int 3

int 1

5 five 5 five \ n5 five 5 five 5 five

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongzhucha3999 2014-10-21 01:40
    已采纳

    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.

    打赏 评论

相关推荐 更多相似问题