将 Javascript 变量传递给 laravel 5.3 中的路由

Passing Javascript variable to route in laravel 5.3

我有一个 Laravel blade 表单,其中包含一个 table 显示数据库中的一些数据。当我单击某个列时,我编写了一个 js 函数来将某个选定项目的 id 捕获到 js 变量 "var selectedItem"。

现在我想把这个js变量传给'edit.item.blade'页面,加载这个值对应的相关记录。

我的问题是在 laravel 中编辑所选项目的最佳方式是什么?并且无论如何要在按钮单击事件中将此 JS 变量传递给路由并使用相关记录加载 'edit.item.blade' 进行编辑。

你通常在 laravel 中做的是传递你想在 url 中看到的记录的 ID。假设您想查看 ID 为 1 的报告的详细信息,您将转到 url“/reports/1”,它指向报告控制器中的显示功能。

路线

在您的 routes/web.php 中添加:

Route::get('/reports/{report}',RecordController@show);

它的作用是获取在 /reports/ 之后键入的任何内容,并将其传递给 show 函数。所以如果你去 /reports/1 路由会通过 1 到显示函数

控制器

在你的控制器中,你必须制作一个显示函数,它接受你的路由传递的变量。然后您将使用该变量来查找相应的记录并将其传递给视图。 看起来像这样

public function show($id){
    $report = Report::find($id); // Find the corresponding report

    // Pass the report along to the view resources/views/reports/show.blade.php
    return view('reports.show',compact($report));
}

显示视图

在您的显示视图中,您现在可以使用 $report 从报告中获取任何信息,例如 $report->name,具体取决于您的数据库。

索引

现在在索引视图中,我认为您正在谈论的视图,您循环遍历来自某些 table 的所有记录。由于您没有在 post 中包含任何代码,我假设您使用 foreach 循环遍历数据。使用该循环,我们可以根据每个记录的 id 给每个记录一个 link 。 看起来有点像这样

<table>
  <tr>
    <td> Name </td>
    <td> Edit </td>
  </tr>
  @foreach($reports as $report)
    <tr>
      <td> $report->name </td>
      <td><a href="{{ url('reports/' . $report->id) }}">Edit</a></td>
    </tr>
  @endforeach
</table>