Laravel中redirect()->back()->with()传多值到Blade仅首个生效如何解决
问题原因与修复方法
1. 传参写法错误
Laravel的redirect()->with()方法不支持直接传入多组键值对作为独立参数,原生仅支持两种传参方式:
- 单次调用仅传一组键值对,多次链式调用
with - 单次调用传入一个完整的关联数组作为参数
你原写法仅会识别第一组fee的键值对,后续参数全部被忽略,这是其他值丢失的核心原因。
2. 调试代码未删除
你代码中写的dd()函数执行后会直接终止程序运行,后续的重定向逻辑根本不会执行,测试时需删除或注释掉所有dd代码。
正确代码示例
修改控制器中的重定向代码即可,两种写法二选一:
写法1:链式调用with
return redirect()->back() ->with('fee', $fee) ->with('vat', $vat) ->with('Transaction_vat', $Transaction_vat);
写法2:传入关联数组(更推荐,代码更简洁)
return redirect()->back()->with([ 'fee' => $fee, 'vat' => $vat, 'Transaction_vat' => $Transaction_vat ]);
额外逻辑优化提示
你当前的区间判断逻辑存在问题:所有or条件只要第一个满足就会触发对应分支,比如$value > 0 or $value > 10000等价于只要$value>0就走第一个分支,后续的elseif永远不会执行。建议将or改为&&,并补充上限判断,示例:
if ($value > 0 && $value <= 10000) { // 对应区间逻辑 } elseif ($value > 10000 && $value <= 100000) { // 对应区间逻辑 }
修改后Blade模板的取值代码不需要变动,直接用session('键名')即可正常获取所有值。
内容的提问来源于stack exchange,提问作者Dominic
相关产品推荐
相关产品推荐

