我的目标是将对象从当前函数传递到其他函数。如您所见,下面的代码已在控制器部分提供了多种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}].
}
路线
Route::get('supply_status/{data}', 'TestController@supply_status')->name('supply_status');
答案 0 :(得分:1)
在这种情况下,您确实应该使用Session类
Session::put('customer_data', $request->all());
Session::save();
redirect()->route('foobar');
在foobar中
if($data = Session::get('customer_data')) {
dump($data);
}
您也可以执行以下操作:redirect()->with(['customer_data' => $request->all()])
,然后用Session::get('customer_data')
或session()->get('customer_data')
相同的方式获取它
答案 1 :(得分:-3)
您可以使用PHP函数序列化并将结果放入GET或POST参数: http://php.net/manual/fr/function.serialize.php
然后,您必须反序列化您的数据: http://php.net/manual/fr/function.unserialize.php
但这并不安全,因为用户可以修改该数据。您应该根据需要进行此操作,以保持其在会话中或其他状态。
return redirect()-> route('supply_status',['data'=> serialize($ data)]);
dump(unserialize($ data));