使用 compact 将数组从控制器传递到视图 laravel

Passing an array from controller to view laravel using compact

我正在使用 laravel 5.3(make:auth 自动注册和用户身份验证生成器),我想让用户在注册表中选择他们的标签。

我想将 $tags = App\Tag::all(); 传递给位于 views\auth\register.blade.phpregister.blade.php 文件。

我找到了这个方法:

public function showRegistrationForm()
{
    return view('auth.register');
}

我想做:

public function showRegistrationForm()
{
    $tags = App\Tag::all();
    return view('auth.register', compact($tags));
}

但是我在尝试访问 register.blade.php 文件时得到未定义的变量 'tags'

不要提供变量本身,使用时提供变量名compact

return view('auth.register', compact('tags'));

首先你需要知道这个:

模型视图控制器

控制器是中心点,即从模型获取数据并将数据传递给视图或普通视图。那么这是什么意思:

public function showRegistrationForm()
    {
        return view('auth.register');
    }

这里 returns 是一个简单的视图。下面 returns 是一个包含模型数据的视图,在你的例子中 App\Tag:App\Tag::all() 是一个集合,即带有数据集的容器;

public function showRegistrationForm()
    {
        $tags = App\Tag::all();
        return view('auth.register', compact($tags));
    }

或者更好的是,与其压缩数组,不如创建一个新数组并传递数据集,怎么做?

return view('auth.register', ['tags' => $tags]);

调试应用的方法如下:使用以下方法:

public function showRegistrationForm()
    {
        $tags = App\Tag::all();
        dd($tags);
        //return view('auth.register', compact($tags));
    }

您看到数组或错误了吗?如果是数组,那么你的数据集被传递给视图,如果不是,那么就会出现模型不存在之类的错误,只需检查你的日志文件。

祝你好运。

如果你想使用 compact 然后像这样使用

 return view('auth.register', compact('tags'));

在 laravel 5.3 中它们有如下变化,但即使您可以同时使用这两种方法 :)

return view('auth.register', ['tags' => $tags]);