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

时间:2016-12-18 16:31:15

标签: javascript php laravel-5.3

我有一个Laravel刀片表单,其中包含一个表格,可以显示数据库中的一些数据。当我点击某个列时,我写了一个js函数来捕获某个选定项的id到js变量“var selectedItem”。

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

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

1 个答案:

答案 0 :(得分:-1)

你通常在laravel中做的是传递你想在网址中看到的记录的id。假设您要查看ID为1的报告的详细信息,您将转到URL“/ reports / 1”,它指向报告控制器中的show函数。

<强>路线

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

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

这样做是在 / reports / 之后输入任何内容并将其传递给show函数。因此,如果您转到 / reports / 1 ,路线会将 1 传递给show function

<强>控制器

在您的控制器中,您必须创建一个show函数,该函数接受您的路径传递的变量。然后,您可以使用该变量查找相应的记录并将其传递给视图。 这看起来像这样

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,具体取决于您的数据库。

<强>索引

现在在索引视图中,您所说的视图我认为,您可以遍历某些表中的所有记录。由于您没有在帖子中包含任何代码,我只是假设您使用foreach循环遍历数据。使用该循环,我们可以根据其ID为每条记录提供链接。 看起来有点像这样

<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>