Laravel打印功能异常:点击打印未传递搜索筛选后的数据
问题解决方法
问题出在打印请求没有携带当前页面的筛选参数,导致控制器无法应用筛选条件,返回了全部数据。直接修改前端打印函数,把当前页面的搜索参数一并传递给打印接口即可:
前端代码修改
const handlePrint = () => { // 获取当前页面的所有查询参数 const currentParams = new URLSearchParams(window.location.search); // 添加上打印标识参数 currentParams.set('print', '1'); // 拼接成完整的打印请求地址 const printUrl = `printProductSNWLedger?${currentParams.toString()}`; window.open(printUrl, '_blank'); };
原理说明
原来的打印函数只传递了print=1这一个参数,没有把用户之前输入的machineries_ID、hospital_ID等筛选参数带过去。控制器的$searchParameters会从请求中获取这些参数,没有参数的话就不会添加筛选条件,自然返回全部数据。修改后,打印请求会包含当前页面的所有筛选参数,控制器就能复用已有的筛选逻辑,返回符合条件的数据给打印视图。
额外验证(可选)
可以在控制器的__invoke方法开头临时添加日志,确认打印请求是否携带了筛选参数:
// 临时添加,测试完成后可删除 Log::info('Print request parameters:', request()->all());
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

