laravel下搜索结果并进行下载的问题。

下载页面和搜索页面是同一页面,需要把搜索结果当成文件下载下来。
现在搜索和下载的方法都写好了,就是下载的时候不知道get的参数如何传递过去。或者把搜索结果直接就传给download方法。
类似于这种感觉。
两种思路,都不知道怎么做。

public function search(Request $request)
{
    $keywords = [输入的关键字];
    $searchResult = [DB拿到的数据]
    return $searchResult;
}

public function download(Request $request)
{
     //1.不知道怎么拿到上一个结果的数据。
     $data = $searchResult;
     //2.直接调用上一个搜索方法得到数据,但是无法从搜索结果的页面get获得关键字。
    
    return CSV::download($data, $header, $filename, true);

}
阅读 1.6k
2 个回答

稍微改动一下search方法。


public function search(Request $request,$download=false)
{
    $keywords = [输入的关键字];
    $searchResult = [DB拿到的数据];
    // 如果download为真 就返回download的列表 否则就按照search的正常逻辑处理
    if($download){
        return $searchResult;
    }
    return $searchResult;
}

public function download(Request $request)
{
     //1.不知道怎么拿到上一个结果的数据。
     //$data = $searchResult;
     //2.直接调用上一个搜索方法得到数据,但是无法从搜索结果的页面get获得关键字。
    // 在点击下载时 把search页面的QueryString 全部带过来 然后把 $request给它
    $data = $this->search($request,true);
    return CSV::download($data, $header, $filename, true);

}

已解决。
利用cache可以将结果暂时保存,然后在下一个方法里取出。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题