将数据传递给表单我做错了什么?
路由很好,视图正在初始化,但表单中的某些东西正在轰炸。
用户控制器:
public function show()
{
$user = Auth::user();
return view('showprofile')->with('thisUser', $user);
}
形式:
<h1>{{ $thisUser->name }} </h1>
错误:
ErrorException in 5404eb375e4ed4f330e070a1642c598527ff029d.php line 9:
Undefined variable: thisUser (View: ....\resources\views\showprofile.blade.php)
消息来源:YouTube教程https://www.youtube.com/watch?v=0Qzi1yOoLBQ大约10分钟。
答案 0 :(得分:2)
据我所知,您希望传递变量进行查看,但您使用的是with
。 with
有意创建flash session variable
而不是变量来查看。
以下是如何将变量传递给您的视图
public function show()
{
$user = Auth::user();
$data = ['thisUser' => $user];
return view('showprofile', $data);
}
刀片文件中的
<h1>{{ $thisUser->name }} </h1>
答案 1 :(得分:2)
你实际可以做的只是:
return view('showprofile', ['thisUser' => Auth::user()]);
您可以通过刀片检索此信息:
<h1>{{ $thisUser->name }} </h1>
如果你没有在任何地方使用它,你不需要中间变量。这就是Laravel的美丽吧?!
答案 2 :(得分:1)
在您的刀片中,您使用了
<h1>{{ $thisUser->name }} </h1>
据我所知,您需要使用相同的名称更改返回变量。
return view('showprofile')->with('thisUser', $thisUser);
我希望这会对你有所帮助。
答案 3 :(得分:0)
所有这些示例都假设您已登录。如果您未登录,Auth::user()
将返回null
而不是用户模型。
在您的刀片中,您始终可以:
Your name is {{ ($currentUser ? $currentUser->name : null) }}!
或者,如果您不想在刀片文件中进行逻辑检查,则可以始终执行此操作以返回空的用户模型,这样您的引用仍可正常工作。
return view('blade-file', ['currentUser' => Auth::user() ?: new \App\User]);
(当然假设您的用户模型为\ App \ User - 根据需要进行替换)。
下面的示例输出(两者都未登录时):
>>> $user = Auth::user()
>>> $user->first_name
PHP error: Trying to get property of non-object on line 1
>>>
>>> $user = Auth::user() ?: new \App\User
=> App\User {#765}
>>> $user->first_name
=> null
现在,如果我登录并使用上面返回null的相同逻辑而不是错误,那么它可以工作:
>>> Auth::loginUsingId(2)
>>> $user = Auth::user() ?: new \App\User
>>> $user->first_name
=> "Austin"