php - Laravel:使用发布路线重定向
问题描述
一直试图找到一种方法来调用将多维数组传递给 Post 路由,但没有成功。
数组如下所示:
"order" => array:16 [
"id" => "1"
"total" => "4825"
"neighborhood" => "Barrio Bravo"
]
"products" => array:2 [
4 => array:4 [
"id" => "4"
"name" => "Maestro Dobel 750ml"
"price" => "530"
"quantity" => "1"
]
1 => array:4 [
"id" => "1"
"name" => "Don Julio 70 700ml"
"price" => "650"
"quantity" => "1"
]
]
"grandTotal" => "1180"
"balanceToPay" => "354"
"cartTotal" => "826"
unit test
我在调用路由时断言路由没有任何问题,如下所示:
$this->post(route('order.success', $orderInfo));
但是当涉及到控制器时,我找不到order.success
使用它的orderInfo
数组重定向到的方法。
这不起作用,因为redirect
仅适用于GET
:
return redirect(route('order.success', $orderInfo));
想法?
解决方案
它不适用于简单的重定向,因为您无法选择 HTTP 方法。当您进行重定向时,它始终是 GET。它适用于您的测试,因为您手动发出 POST 请求。
我可以看到 2 个解决方案:
- 您可以使用 GET 方法发送数据(它们作为 URL 参数添加)。如果它们不是机密的,它可以是一个解决方案。
- 如果您不想在 URL 中发送这些数据,则必须将它们保存在某个地方,并在您位于 order.success 页面时从存储中获取它们。例如,您可以将它们保存在会话存储中或浏览器的本地存储中。
此外,如果测试在您的应用程序中没有发生的行为(发布请求而不是重定向),您的测试也不好。
推荐阅读
- android - 嵌套在 RecyclerView 内的 GridView 不包裹高度并且只显示单行
- c++ - Conditional update of NumericVectors in Rcpp
- sql - SQL Server如何确定通过表达式派生的列的数据类型
- docker-compose - Traefik 两个前端在一个后端不同端口上
- git - Github - 两个私人回购之间的转移问题
- ms-word - 如何为 Word 文档 office.js api 的“FirstPage”插入标题?
- asp.net-mvc - 单击链接时添加多个下拉列表
- python - 主要功能没有运行?使困惑
- c - 相同的库文件适用于 stm32f7 但不适用于 stm32f4
- docker - 为 2 个不同的 DLT 网络重用 Hyperledger Fabric 中的对等点/节点