将数据传递到表单(laravel)的故障排除

时间:2016-07-19 00:49:06

标签: php laravel

将数据传递给表单我做错了什么?

路由很好,视图正在初始化,但表单中的某些东西正在轰炸。

用户控制器:

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分钟。

4 个答案:

答案 0 :(得分:2)

据我所知,您希望传递变量进行查看,但您使用的是withwith有意创建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"