繁体   English   中英

使用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');
    }

这将返回一个普通视图。下面将返回一个包含模型数据的视图,在您的情况下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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM