如何通过控制器laravel呼叫路由的帖子发送数据?

时间:2017-09-05 07:11:45

标签: laravel redirect post routes laravel-5.3

我的情况是这样的:

我有添加方法。如果方法运行,它将调用route

这样的代码:

public function add(Request $request)
{
    ...
    return redirect('shop/payment/checkout/'.json_encode($data['cart']).'/'.$id);
}

我的路线是这样的:

Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
    Route::get('payment/checkout/{cart}/{id}', ['as'=>'payment.checkout','uses'=>'ShopController@checkout']);
});

它将在商店控制器中调用结账方法

这样的方法:

public function checkout($cart=null, $id=null)
{
    dd($cart, $id)
}

它有效

如果代码执行,它将显示$cart$id

的结果

但它使用get

我想使用post

更改它

因为如果使用get数据购物车会在网址中找到

我该如何解决这个问题?

所以数据在网址中不可见

似乎这种情况必须使用post

但在这种情况下,我仍然混淆使用post

1 个答案:

答案 0 :(得分:1)

你无法使用POST重定向,这是一个http限制,而不是Laravel。

也许最新的解决方案是flash the data you need to the session

控制器:

const { query } = require('./async-db')
async function selectAllData( ) {
  let sql = 'SELECT * FROM my_table'
  let dataList = await query( sql )
  return dataList
}

async function getData() {
  let dataList = await selectAllData()
  console.log( dataList )
}

getData()

路线:

public function add(Request $request)
{
    ...
    return redirect('shop/payment/checkout')->with('cart', json_encode($data['cart'])->with('id', $id);
}

控制器:

Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
    Route::get('payment/checkout', ['as'=>'payment.checkout','uses'=>'ShopController@checkout']);
});