【问题标题】:Passing Collection from Blade to Controller将集合从刀片传递到控制器
【发布时间】:2020-12-29 07:07:16
【问题描述】:

我正在开发一个应用程序,需要将数据从 Blade 传回控制器

我像这样将数据传递给刀片

$reports = $query->paginate();
return view('admin.report', compact('reports'));

这很好用,但是我想要一个按钮来将 $reports 集合传递给这个函数

public function exportToCSV(Document $reports)  

这将创建一个 CSV 文件,该文件将被下载,包括来自 $reports 的每个条目

我在这方面做了很多谷歌搜索,甚至有人帮助我尝试弄清楚,但无济于事。

【问题讨论】:

  • 我认为你可以创建一个按钮链接到一个调用你想要的控制器方法的路由。
  • 这就是我一开始尝试的方法,但没有成功

标签: php laravel eloquent laravel-blade


【解决方案1】:

实现此目的的一种方法是使用表单。您可以有一个隐藏的输入,将集合作为值。您将为表单定义一个要发布到的路由,并从web.php 中的路由调用您的函数。

    <form action="/route/to/wherever/" method="POST">
     {{ csrf_field() }}
    <input type="hidden"
     name="key"
     value="{{ $collection }}"
      >
    </form>

请务必添加提交按钮。在您的方法中,您将收到如下集合:

public function myFunction(Request $request){
$data = $request->key;
}

【讨论】:

  • 谢谢,最终成功了,不得不对我的控制器代码进行一些其他更改,但它比我尝试的另一种方法效果更好。
  • 我尝试了这个确切的东西,认为它会起作用。我收到此错误“htmlspecialchars(): Argument #1 ($string) must be of type string, array given
  • @Lyrical.me 您可以尝试将变量包装在json_encode($variable)
猜你喜欢
  • 2019-04-13
  • 2017-07-31
  • 2019-12-19
  • 2019-11-13
  • 2019-12-30
  • 2017-09-03
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多