Laravel 5.2:如何从Laravel网站上的另一个URL捕获POST数据

时间:2019-01-22 14:20:51

标签: laravel post laravel-5.2

是否存在从某人的laravel项目中另一个URL捕获POST数据的适当方法。

我的Laravel项目在www.mylaravel.com上,并且我有一个通过路由URL www.mylaravel.com/post-data/9访问的表单,该表单将POST数据发送到www.myapi.com,并且是字段/数据之一我需要从我的网站发送包含网站上的返回URL,该URL为www.mylaravel.com/get-data。

由第三方网站www.myapi.com处理后,它将对POST数据的响应返回POST数据,该URL在我的有效载荷中提供,该URL为www.mylaravel.com/get-data

在返回时捕获POST数据有一些挑战

路线:

Route::get('post-data/{id}', ['as' => 'user.post.data', 'uses' => 'MyController@postData']);

Route::post('get-data', ['as' => 'user.get.data', 'uses' => 'MyController@getData']);

控制器:

    public function postData($id)
    {

    $my_data = $this->data->find($id);

    $mid = $my_data->mid;
    $skey = $my_data->skey;

    $return_url = route('user.get.data');

    $form_url = "https://myapi.com/query.jsp";

        return view('user.post-data', compact('skey', 'mid', 'form_url', 'return_url'));

    }//End Method


    public function getData(Request $request)
    {
        // expected name of the POST Param returned are in Uppercase
        $data_date = ($request->DATA_DATE) ? $request->DATA_DATE: '';
        $success = ($request->DATA_SUCCESS) ? $request->DATA_SUCCESS: '';
        $data_id = ($request->DATA_ID) ? $request->DATA_ID: '';

        // if query is successful DATA_SUCCESS param is set to 0 while unsuccessful is either 1 or 2
        if($success == 0 && isset($data_id)){
            $api_resp = 1;
            $api_resp_text = 'Successful';
        }
        else{
            $api_resp = 0;
            $api_resp_text = 'Unsuccessful';
        } 

        return view('user.get-data', compact('data_date', 'success', 'api_resp', 'api_resp_text', 'data_id'));

    }//End Method

路线后数据/ {id}上的表单刀片:


<form class="ui form" action="{{$form_url}}" method="post">
    <input type="hidden" name="DATA_ID" value="{{$mid}}" />  
    <input type="hidden" name="KEY_CODE" value="{{$skey}}" />
    <input type="hidden" name="RETURN_URL" value="{{$return_url}}" />
<input type="submit" name="send" value="Get Status" />


用于打印myapi.com返回的POST数据的刀片

<div class="data_notice">
  @if($api_resp)
    <h4>Data status is &nbsp;&nbsp; <em>{{$api_resp_text}}</em></h4>
  @else
    <h4>Data status is &nbsp;&nbsp; <span>{{$api_resp_text}}</span></h4>
  @endif

    <h4>Data Unique ID : {{$data_id}}</h4>
    <h4>Data Date is &nbsp;&nbsp; {{$data_date}}</h4>   
</div>

我必须声明第三方URL myapi.com返回POST数据,如果我不得不在Laravel之外使用简单的php形式来查询URL并返回POST数据。

显然,我的Laravel代码中缺少某些内容。从路由声明到控制器代码。

我需要如何以及如何修复代码?

0 个答案:

没有答案