【问题标题】:Laravel View::Make only uses first iteration of foreach loopLaravel View::Make 仅使用 foreach 循环的第一次迭代
【发布时间】:2014-12-16 02:58:19
【问题描述】:

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

我使用部分(文章/部分/文章)和压缩数据数组(来自模型的文章)构建了一组对 View::make 的调用

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

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

我的所有文章都在那里,因为这是从控制器循环中的 var_dump 打印的内容

int 6

int 5

int 4

int 3

int 1

5 五 5 五 5 五 5 五 5 五

【问题讨论】:

  • 你真的不应该那样做。 真的不应该。

标签: php laravel blade


【解决方案1】:

最好将 $article_result 简单地传递给您的视图Home/blog,然后从视图中循环遍历它们。您可以在那里调用局部视图,它可以在循环期间访问每个$article

因此,在您的控制器中,只需调用 Home/blog 视图:

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
                ));
}

...在视图中,循环浏览文章。

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

Article/partials/article 中,只需引用$article 即可。

【讨论】:

  • 这并没有改变什么
  • 发布您的输出。
  • 我对 Blade 模板太着迷了,因为我试图用 html 和一个 partials.article 为内容扩展它的基础。
猜你喜欢
  • 2016-06-19
  • 2018-07-07
  • 2023-03-11
  • 2023-03-03
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多