laravel返回页面一个数组,还要再compact()一次吗?

查看:198
本文介绍了laravel返回页面一个数组,还要再compact()一次吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

laravel返回页面一个数组,还要再compact()一次吗?

demo:

    public function index()
    {
        $articles = user()->articles;

        $multiplied = $articles->map(function ($item, $key) {
            $item->tags = ['foo', 'bar'];
            return $item;
        });
        $newArticles = $multiplied->all();
        dd($newArticles); //是一个数组
        return view('articles', compact('newArticles'));
    }

dd($newArticles)的结果是这样:

array:2 [▼
  0 => Article {#498 ▶}
  1 => Article {#501 ▶}
]

问题:
最后一句返回到视图的语句怎么不加compact()不行?

return view('articles', $newArticles);//这样写不行,会显示Undefined variable: newArticles
return view('articles', compact('newArticles'));//$newArticles已经是数组了,怎么还要加一个compact()?

解决方案

这个是其实说到底是 函数 extract 的使用问题, 之所以你在视图的上下文中可以使用到newArticles, 就是它的作用。

Laravel View 使用 extract 的 代码

extract 会把关联数组 将变量从数组中导入到当前的符号表中。

$arr = ['a' => '1', 'b' => '2'];
extract($arr);
var_dump($a, $b);

所以,你肯定想在视图中有个变量指向这个数组,而不是把这个数组整个 extract 到视图里,如果不compact,你都没法循环这个文章列表了。

如果不加,你还是需要传入一个数组, 如 ['articles' => $newArticles]

这篇关于laravel返回页面一个数组,还要再compact()一次吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆