我想将一些用户数据传递给视图,以便它可以显示在配置文件页面中。它有很多,但我不想只传递所有内容,因为视图中有一些东西无法访问。所以我的代码看起来像这样:
return view('profile', [
'username' => Auth::user()->username,
'email' => Auth::user()->email,
'firstname' => Auth::user()->firstname,
'country' => Auth::user()->country,
'city' => Auth::user()->city->name,
'sex' => Auth::user()->sex,
'orientation' => Auth::user()->orientation,
'age' => Auth::user()->age,
'children' => Auth::user()->children,
'drinking' => Auth::user()->drinking,
'smoking' => Auth::user()->smoking,
'living' => Auth::user()->living,
'about' => Auth::user()->about,
]);
我的问题是:这可以写得更短/更简单吗?
谢谢!
修改
我不希望这样:{{ Auth::user()->firstname }}
因为视图中存在逻辑,这很糟糕 - 我认为,应该只显示普通变量,而不是其他任何东西。
所以我正在寻找类似的东西:
return view('profile', Auth::user()->only(['firstname', 'email', ...]));
答案 0 :(得分:1)
您可以自己创建一个名为getPublicData
的方法,然后返回所需的所有属性。
...
public function getPublicData() {
return [
'property_name' => $this->property_name
];
}
...
...然后在您的控制器/视图中使用它。也许它不是最佳解决方案,但你可以在模型中隔离这个东西,避免控制器中的代码过多。
另一种高级方法可能是覆盖__get
方法。但是,I am not the first in this case。
希望它有所帮助!
答案 1 :(得分:-2)
您不需要将这些变量传递给视图,您可以使用刀片在视图中直接访问它们
<h1>{{ Auth::user()->username }}</h1>