【问题标题】:Laravel Route not passing objectLaravel Route 未传递对象
【发布时间】: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 方法需要接收用户对象,它没有。

【问题讨论】:

    标签: php laravel routes laravel-blade


    【解决方案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'));
      }
      

      【讨论】:

      • 这行得通,但是有没有办法将整个用户对象传递给它以减少数据库操作?
      猜你喜欢
      • 2021-06-21
      • 2015-09-15
      • 2018-07-23
      • 1970-01-01
      • 2019-07-23
      • 2020-12-31
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多