使用compact从控制器传递数组以查看laravel

时间:2016-09-29 23:55:04

标签: php arrays laravel laravel-5.3

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

我想将$tags = App\Tag::all();传递给位于register.blade.php的{​​{1}}文件。

我找到了这个方法:

views\auth\register.blade.php

我想这样做:

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

但是在尝试访问public function showRegistrationForm() { $tags = App\Tag::all(); return view('auth.register', compact($tags)); } 文件时,我得到了未定义的变量'tags'

3 个答案:

答案 0 :(得分:3)

不要自己提供变量,在使用compact时提供变量名称。

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

答案 1 :(得分:0)

首先你需要知道这个:

模型观看次数控制器;

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

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

这里返回一个普通的视图。下面这个返回一个包含模型数据的视图,在你的情况下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));
    }

您是否看到数组或错误?如果是数组然后你的数据集被传递给视图,如果没有那么就会出现模型不存在的错误或者其他错误,只需检查你的日志文件。

祝你好运。

答案 2 :(得分:0)

如果你想使用紧凑型,那就像这样使用

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

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

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