Laravel视图中未定义的变量

3

我是一名新手,正在使用Laravel 5.3版本。我尝试过搜索但并没有发现我的错误所在。我的视图中一直显示“Undefined variable: user”,同时我也在进行表单模型绑定。手动输入URL进行模型绑定可以正常工作,但无法通过点击链接打开编辑视图。

我的路由如下:

Route::get('/profile/edit/{id}', 'ProfileController@getEdit');
Route::post('/profile/edit/{id}', 'ProfileController@postEdit');

我的控制器:

public function getEdit($id){

    $user= User::findOrFail($id);
    return view('profile.edit', compact('user'));
}

我的看法:

<li><a href="{{ url('/profile/edit', $user->id ) }}">Update profile</a></li>

我的表格:

{!! Form::model($user,['method' => 'POST', 'action'=>        ['ProfileController@postEdit', $user->id]]) !!}
4个回答

1
public function getEdit($id){

    $user= User::findOrFail($id);
    return view('profile.edit', ['user' => $user]);
}

public function postEdit($id){

    $user= User::findOrFail($id);
    return view('profile.edit', ['user' => $user]);
}

尝试过了,但仍然遇到相同的问题。 - Slillz
你能确认你实际上是使用 getEdit 方法来渲染你的视图,而不是 postEdit 方法吗? - Joe1992
是的,在我的路由中它调用了getEdit。还有其他确认的方法吗?但我非常确定。 - Slillz
是的,我执行了一个 dd 命令并调用了那个方法。不过为了让它正常工作,我不得不从路由和方法中删除变量,这样就出现了一个错误。 - Slillz
显示剩余2条评论

0

我认为,在你看来的陈述中

<li><a href="{{ url('/profile/edit', $user->id ) }}">Update profile</a></li>

是导致问题的原因。您可以通过单击更新个人资料链接后查看地址栏中的URL来确认此问题。

尝试将其更改为这个

<li><a href="{{ action('ProfileController@getEdit', $user->id ) }}">Update profile</a></li>

我已经修改了,但仍然出现未定义变量:user。点击后,我看到“myapp.dev/profile/edit”,但变量没有显示。 - Slillz
那么问题就在这里!你看到的URL是 myapp.dev/profile/edit,但实际上应该是 myapp.dev/profile/edit/1(假设 1 是用户ID)。 - linuxartisan
正确。我意识到这从一开始就是问题。正如您从我的控制器和视图中看到的,我正在传递变量,但它没有显示在URL中。 - Slillz

0

尝试在视图中传递数据数组

public function getEdit($id){
    $data['user'] = User::findOrFail($id);
    return view('profile.edit')->withdata($data);
}

在视图页面中尝试打印 $data。
{{ print_r($data) }}

在模型中定义表名和主键。 - Sujal Patel
是的,在用户模型中定义表名和主键。 - Sujal Patel
在控制器中,在此行代码 $data['user'] = User::findOrFail($id); 之后,打印出 $data 的内容,使用 print_r($data)。 - Sujal Patel
问题可能是因为我将变量传递给了我的profile.edit而不是导航,而错误提示显示在导航处。我的profile.edit继承了导航布局。 - Slillz
问题可能是因为我将变量传递给了我的profile.edit,而不是我导航栏,在那里显示错误。我的profile.edit扩展了导航布局。 - Slillz
显示剩余3条评论

0
请编辑您的getEdit方法。
public function getEdit($id){
    $user= User::findOrFail($id);
    dd($user);
    return view('profile.edit', compact('user'));
}

检查是否存在任何用户变量数据。


是的,在一个数组中向视图显示了一些数据。 - Slillz
我认为你正在其他页面显示以下链接。我的观点:<li><a href="{{ url('/profile/edit', $user->id ) </a>">更新个人资料}}</li> 请检查$user是否传递到该视图。 - Muhsin VeeVees

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接