【问题标题】:Laravel 5 function redirect to third party urlLaravel 5 函数重定向到第三方 url
【发布时间】:2017-01-06 11:00:29
【问题描述】:

如何将所有表单数据函数传递给第三方 URL。假设我的第三个 URL 是

`http:\\www.abletoaccess.com\form\request` 

出于安全原因,我不想在form action 方法中访问此 URL,或者我不想发布直接表单数据。当我提交表单时,我希望所有数据都进入我的函数并使用发布数据重定向到第三方 URL 并添加更多参数。

任何帮助将不胜感激!!!!

【问题讨论】:

    标签: php forms laravel laravel-5 laravel-5.2


    【解决方案1】:

    您可以通过控制器处理请求,然后显示视图并将其自动提交到外部 url。

        <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        Page is loading...
                    </div>
                    <div class="panel-body">
                        {!! Form::open(['url' => $externalUrl, 'method' => 'POST', 'class' => 'form-horizontal', 'id' => 'my-form']) !!}
                            @foreach ($fields as $key => $value)
                                {{ Form::hidden($key, $value) }}
                            @endforeach
                            {{ Form::hidden('signature', $signature) }}
                        {!! Form::close() !!}
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script>
        document.getElementById('my-form').submit();
    </script>
    

    【讨论】:

      【解决方案2】:

      尝试以下代码:

      <form method="post" action={{ action('Controller@method') }}>
      
      <input type="submit" value="add">
      </form>
      

      在控制器文件中写入以下代码:

      public function method(Request $request)
      {
           Redirect::away('external url')->withInputs(Input::all());
      }
      

      Laravel 5: how to redirect with data to external resource form controller

      【讨论】:

      • 这将创建一个 GET 请求,而不是像 OP 要求的 POST 请求。
      【解决方案3】:

      首先,这似乎不是 Laravel 特有的问题。

      其次,你需要检查PHP中的CURL函数。

      PHP CURL

      【讨论】:

      • 第三方不允许使用CURL
      【解决方案4】:

      如果可以的话,安装Guzzle 客户端来帮助解决这些问题。

      您可以将客户端传递给您的控制器,然后向另一个 URL 发出 post 请求,如下所示:

      public function someMethod(GuzzleHttp\Client $client)
      {
          $client->post('http:\\www.abletoaccess.com\form\request', [
              'form_params' => [
                  'param1' => 'something',
                  ...
              ]
          ]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-22
        • 1970-01-01
        • 2015-11-10
        • 2014-12-20
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        相关资源
        最近更新 更多