Laravel,如何通过redirect()route()传递对象?

Lea*_*ing 7 php laravel

我的目标是将对象从当前函数传递到其他函数。正如您可以看到下面的代码,我提供了return在控制器部分中完成的多种方法。我已经评论了它的每个错误。我不确定为什么会发生这种情况,尽管有些方法来自其他一些问题的投票答案。

数组内容 [ dump($data = $request->all()); ]

在此输入图像描述

控制器

public function supply_status(Request $request, $data)
{
    dump($data);
}

public function supply_redirect(Request $request)
{
    $data = $request->all();

    //option 1
    return redirect()->route('supply_status', compact('data')); // "Array to string conversion" error

    //option 2
    return redirect()->route('supply_status', ['data' => $data]); // "Array to string conversion" error

    //option 3
    return redirect()->route('supply_status')->with('data', $data); // Missing required parameters for [Route: supply_status] [URI: supply_status/{data}].

    //option 4
    return redirect()->action('TestController@supply_status')->with('data', $data); // Missing required parameters for [Route: supply_status] [URI: supply_status/{data}].
}
Run Code Online (Sandbox Code Playgroud)

路线

Route::get('supply_status/{data}', 'TestController@supply_status')->name('supply_status');
Run Code Online (Sandbox Code Playgroud)

Tsc*_*cka 9

对于这种情况,你确实应该使用Session

Session::put('customer_data', $request->all());
Session::save();
redirect()->route('foobar');
Run Code Online (Sandbox Code Playgroud)

在 foobar 中

if($data = Session::get('customer_data')) {
   dump($data);
}
Run Code Online (Sandbox Code Playgroud)

您也可以这样做:redirect()->with(['customer_data' => $request->all()])然后用Session::get('customer_data')or以相同的方式获取它session()->get('customer_data')