php - 如何在使用 Laravel 的一个控制器中将数据从一个函数传递到另一个函数?
问题描述
我有一个post,如果post成功会输出data2 "$result ['STATUS_CODE'] == 200",你如何将新获得的数据传递给另一个函数?
public function createPassanger(Request $request){
$api = new Api;
$input = $request->all();
$platform = "W";
$id_flight = Session::get('id_flight');
$url = config::get('constants.url')."api/passanger/add";
//this is my post
$post = array(
"passanger_name" => $input['name'],
"passanger_email" => $input['email'],
"passanger_passport" => $input['passport'],
"id_flight" => $id_flight,
"platform" => $platform
);
$result = $api->post($url, $post);
//this is results of the post
if($result['STATUS_CODE'] == 200){
$summary['id_summary'] = $result['DATA']['id_summary'];
$summary['id_passanger'] = $result['DATA']['id_passanger'];
$summary['id_flight'] = $result['DATA']['id_flight'];
$summary['passanger_name'] = $result['DATA']['passanger_name'];
$summary['passanger_passport'] = $result['DATA']['passanger_passport'];
$summary['passanger_email'] = $result['DATA']['passanger_email'];
$summary['order_id'] = $result['DATA']['order_id'];
$summary['check_in'] = $result['DATA']['check_in'];
$summary['status_booking'] = $result['DATA']['status_booking'];
$summary['status'] = $result['DATA']['status'];
$summary['member_id'] = $result['DATA']['member_id'];
$summary['airlines_id'] = $result['DATA']['airlines_id'];
$summary['airlines_name'] = $result['DATA']['airlines_name'];
$summary['flight_no'] = $result['DATA']['flight_no'];
$summary['airport_id'] = $result['DATA']['airport_id'];
$summary['airport_name'] = $result['DATA']['airport_name'];
$summary['pnr_ticket'] = $result['DATA']['pnr_ticket'];
$summary['departure_time'] = $result['DATA']['departure_time'];
$summary['departure_date'] = $result['DATA']['departure_date'];
$summary['bag_amount'] = $result['DATA']['bag_amount'];
$summary['price'] = $result['DATA']['price'];
$summary['code'] = $result['DATA']['code'];
$summary['symbol'] = $result['DATA']['symbol'];
//I don't want to make a session
// Session::put($summary);
Session::flash('defaultSuccess', 'Success');
Session::flash('textDefaultSuccess', ucfirst((strtolower($result['MESSAGE']))));
return redirect()->route('summary');
}else{
Session::flash('defaultFailed', 'Create Summary Failed!');
Session::flash('textDefaultFailed', ucfirst((strtolower($result['MESSAGE']))));
return redirect()->route('passanger');
}
}
这是一个保存来自 createPassanger 函数的数据的函数,
public function getDataSummary(){
//function to save the post results from function createPassanger
$data['title'] = "Summary";
return view('v_summary', $data);
}
这是来自函数 getDataSummary 的视图,我不想在会话中保存数据
<div class="col-12">
<table class="table borderless">
<form action="{{route('payment')}}" method="POST">
@csrf
<input type="hidden" name="order_id" value="{{Session::get('order_id')}}">
<input type="hidden" name="price" value="{{Session::get('price')}}">
<input type="hidden" name="email" value="{{Session::get('passanger_email')}}">
<tr>
<td>Passanger</td>
<td>:</td>
<td>{{Session::get('passanger_name')}}</td>
</tr>
<tr>
<td>Passport</td>
<td>:</td>
<td>{{Session::get('passanger_passport')}}</td>
</tr>
<tr>
<td>Country Issued</td>
<td>:</td>
<td>{{Session::get('airport_name')}}</td>
</tr>
<tr>
<td>Airline</td>
<td>:</td>
<td>{{Session::get('airlines_name')}}</td>
</tr>
<tr>
<td>Flight No</td>
<td>:</td>
<td>{{Session::get('flight_no')}}</td>
</tr>
<tr>
<td>PNR Ticket</td>
<td>:</td>
<td>{{Session::get('pnr_ticket')}}</td>
</tr>
<tr>
<td>Departure Airport</td>
<td>:</td>
<td>{{Session::get('airport_name')}}</td>
</tr>
<tr>
<td>Departure TIme</td>
<td>:</td>
<td>{{Session::get('departure_date')}} {{Session::get('departure_time')}}</td>
</tr>
<tr>
<td>Bag Required</td>
<td>:</td>
<td>{{Session::get('bag_amount')}}</td>
</tr>
<tr>
<td>Price</td>
<td>:</td>
<td>{{Session::get('symbol')}} {{Session::get('price')}}</td>
</tr>
</table>
<button type="submit" class="btn btn-default btn-book btn-block">
<p class="mb-0">NEXT</p>
</button>
</form>
</div>
我已经尝试了几次从帖子中获取结果数据以保存到 getDataSummary 但结果是错误 500
解决方案
您可以使用此代码尝试此操作
public function createPassanger(Request $request){
$api = new Api;
$input = $request->all();
$platform = "W";
$id_flight = Session::get('id_flight');
$url = config::get('constants.url')."api/passanger/add";
//this is my post
$post = array(
"passanger_name" => $input['name'],
"passanger_email" => $input['email'],
"passanger_passport" => $input['passport'],
"id_flight" => $id_flight,
"platform" => $platform
);
$result = $api->post($url, $post);
//this is results of the post
if($result['STATUS_CODE'] == 200){
$summary['id_summary'] = $result['DATA']['id_summary'];
$summary['id_passanger'] = $result['DATA']['id_passanger'];
$summary['id_flight'] = $result['DATA']['id_flight'];
$summary['passanger_name'] = $result['DATA']['passanger_name'];
$summary['passanger_passport'] = $result['DATA']['passanger_passport'];
$summary['passanger_email'] = $result['DATA']['passanger_email'];
$summary['order_id'] = $result['DATA']['order_id'];
$summary['check_in'] = $result['DATA']['check_in'];
$summary['status_booking'] = $result['DATA']['status_booking'];
$summary['status'] = $result['DATA']['status'];
$summary['member_id'] = $result['DATA']['member_id'];
$summary['airlines_id'] = $result['DATA']['airlines_id'];
$summary['airlines_name'] = $result['DATA']['airlines_name'];
$summary['flight_no'] = $result['DATA']['flight_no'];
$summary['airport_id'] = $result['DATA']['airport_id'];
$summary['airport_name'] = $result['DATA']['airport_name'];
$summary['pnr_ticket'] = $result['DATA']['pnr_ticket'];
$summary['departure_time'] = $result['DATA']['departure_time'];
$summary['departure_date'] = $result['DATA']['departure_date'];
$summary['bag_amount'] = $result['DATA']['bag_amount'];
$summary['price'] = $result['DATA']['price'];
$summary['code'] = $result['DATA']['code'];
$summary['symbol'] = $result['DATA']['symbol'];
//I don't want to make a session
// Session::put($summary);
$file = storage_path().'/data.json';
$handle = fopen($file, 'w+');
fwrite($handle, '');
fwrite($handle, json_encode($summary);
fclose($handle);
Session::flash('defaultSuccess', 'Success');
Session::flash('textDefaultSuccess', ucfirst((strtolower($result['MESSAGE']))));
return redirect()->route('summary');
}else{
Session::flash('defaultFailed', 'Create Summary Failed!');
Session::flash('textDefaultFailed', ucfirst((strtolower($result['MESSAGE']))));
return redirect()->route('passanger');
}
}
并在视图中获取数据
public function getDataSummary(){
$jsondata = array();
$file = storage_path() . '/data.json';
$handle = fopen($file, 'r');
$size = filesize($file);
if ($size > 0) {
$str = fread($handle, $size);
$jsondata = json_decode($str,true);
}
fclose($handle);
//function to save the post results from function createPassanger
$data['title'] = "Summary";
return view('v_summary', compact('jsondata','data'));
}
推荐阅读
- python-3.x - 在 Tensorflow 2.0 中使用 Tensorboard 可视化 Keras 模型
- python - 获取每队得分的总和
- java - 我在 spring jdbc 运行应用程序中有错误
- javascript - 如何为 XML 文件中的字符串值设置最大长度?
- javascript - Javascript - 生成之间的时间延迟
- java - 如何设置文件但它不会将文件复制或移动到存储中?
- python-3.x - 如何在使用不同技术填充 pandas 或 python 中的缺失值后添加带有“填充数据”的列?
- java - java.lang.NumberFormatException:对于输入字符串:“-”
- python - 如何在不使用 np.apply_along_axis() 的情况下在锯齿状 Numpy 数组(不等行长)上应用函数?
- java - 如何修复此代码以使 Java 为大型数组和大量旋转旋转数组?