[英]Passing an array from controller to view laravel using compact
我正在使用laravel 5.3(make:auth自动注册和用户身份验证生成器),我想让用户在注册表单中选择他们的标签。
我想传递$tags = App\\Tag::all();
到位于views\\auth\\register.blade.php
的register.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');
}
这将返回一个普通视图。下面将返回一个包含模型数据的视图,在您的情况下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));
}
您看到数组或错误了吗? 如果为数组,则将数据集传递给视图,如果不存在,则表明模型不存在或存在某种错误,只需检查您的日志文件即可。
祝好运。
如果您想使用紧凑型,那么使用这样的
return view('auth.register', compact('tags'));
在laravel 5.3中,它们具有如下所示的更改,但即使您可以同时使用两种方法:)
return view('auth.register', ['tags' => $tags]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.