我正在使用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'
。
答案 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]);