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

Posted

技术标签:

【中文标题】将Javascript变量传递给laravel 5.3中的路由【英文标题】:Passing Javascript variable to route in laravel 5.3 【发布时间】:2017-05-03 18:55:28 【问题描述】:

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

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

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

【问题讨论】:

Laravel 4, Pass a variable to route in javascript的可能重复 【参考方案1】:

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

路线

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

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

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

控制器

在您的控制器中,您必须创建一个 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>

【讨论】:

以上是关于将Javascript变量传递给laravel 5.3中的路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 使用 AJAX 将 Javascript 变量传递给 PHP 并检索那些

尝试将变量传递给视图时 Laravel 5.1 错误

Laravel 5.2 将变量传递给查询生成器

Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?

如何在 laravel 5.8 中将变量传递给路由?

试图将数组变量从 asp 传递给 javascript