Laravel Route 未传递对象
Posted
技术标签:
【中文标题】Laravel Route 未传递对象【英文标题】:Laravel Route not passing object 【发布时间】:2019-12-02 18:26:07 【问题描述】:我正在开发一个 Laravel 应用程序,并且我有一个刀片文件,其中包含用于打开用户患者个人资料的链接,单击它会加载页面以显示患者,但是该页面没有通过用户对象,并且我不知道为什么
我已经尝试为该页面编写我的路线,就像我为其他页面编写的路线一样,路线已定义,但仍未通过
路线
Route::get('/viewPatient/patient', 'PatientController@show')->name('patients.viewPatient');
链接
<td><a href="route('patients.viewPatient', $user)">$user->firstname</a></td>
控制器函数,如果我死了并且乱扔它只是返回一个空的用户对象。
public function show(User $user)
dd($user);
return view('patients.show', compact('user'));
预期的结果是 show 方法需要接收用户对象,它没有。
【问题讨论】:
【参考方案1】:您需要调用与传入路由时相同的变量名称,如下所示:
public function show(User $patient)
【讨论】:
好的,我在到用户的路径中更改了患者并修复了它。【参考方案2】:试试
<a href="route('patients.viewPatient', ['patient'=>$user->id])">$user->firstname</a>
【讨论】:
【参考方案3】://改成这样
<td><a href="route('patients.viewPatient', $user->id)">$user->firstname</a></td>
//在你的控制器中
public function show($id) //$id you can write $patientId
$user = User::where('id',$id)->first();
return view('patients.show', compact('user'));
【讨论】:
这行得通,但是有没有办法将整个用户对象传递给它以减少数据库操作?以上是关于Laravel Route 未传递对象的主要内容,如果未能解决你的问题,请参考以下文章