You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WordPress中Gravity Form数据传至Laravel或嵌入Laravel表单?

问题1:Gravity Form提交后传递数据到Laravel

核心原因

直接用Gravity Forms的默认重定向会以GET方式跳转,数据要么丢失要么暴露在URL中,且Laravel与WordPress的session相互隔离,无法直接接收POST数据。推荐通过钩子主动发送数据到Laravel接口,再处理重定向。

解决方案:使用Gravity Forms钩子发送POST请求到Laravel

  1. 在WordPress的functions.php中添加钩子
    替换FORMID为你的Gravity Form ID,字段ID(如1、2)对应表单实际字段:

    add_action('gform_after_submission_FORMID', 'send_gform_data_to_laravel', 10, 2);
    function send_gform_data_to_laravel($entry, $form) {
        // 整理表单数据
        $form_data = [
            'full_name' => rgar($entry, '1'),
            'email' => rgar($entry, '2'),
            'message' => rgar($entry, '3'),
            // 按需添加其他字段
        ];
    
        // Laravel接收数据的API端点(替换为你的实际路由)
        $laravel_endpoint = get_site_url() . '/api/gform-submit';
    
        // 发送POST请求,添加密钥验证防止恶意请求
        $response = wp_remote_post($laravel_endpoint, [
            'body' => $form_data,
            'headers' => [
                'Content-Type' => 'application/x-www-form-urlencoded',
                'X-API-KEY' => 'your-custom-secret-key' // 两边保持一致
            ],
            'timeout' => 10
        ]);
    
        // 日志记录请求状态(可选)
        if (is_wp_error($response)) {
            error_log('GForm to Laravel failed: ' . $response->get_error_message());
        }
    
        // 重定向到Laravel的感谢页或其他页面
        wp_redirect(get_site_url() . '/thank-you');
        exit;
    }
    
  2. Laravel端配置接收接口

    • 在routes/api.php添加路由:
      use App\Http\Controllers\GformController;
      
      Route::post('/gform-submit', [GformController::class, 'handleSubmission']);
      
    • 创建GformController处理数据:
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class GformController extends Controller
      {
          public function handleSubmission(Request $request)
          {
              // 验证数据(按需调整规则)
              $validated = $request->validate([
                  'full_name' => 'required|string|max:255',
                  'email' => 'required|email',
                  'message' => 'required|string'
              ]);
      
              // 处理数据:存入数据库、发送邮件等
              // Example: \App\Models\GformSubmission::create($validated);
      
              return response()->json(['status' => 'success'], 200);
          }
      }
      
    • (可选)添加中间件验证API密钥:
      创建中间件VerifyApiKey,在路由中引用,确保只有合法请求能提交数据。

问题2:将Laravel Blade表单嵌入WordPress页面

有两种可行方案,根据你的需求选择:

方案1:HTTP请求拉取表单HTML(无缝嵌入)

通过WordPress短代码调用Laravel生成的表单HTML,适合需要和WordPress页面样式整合的场景。

  1. Laravel端配置表单路由
    在routes/web.php添加路由返回Blade视图:

    Route::get('/embeddable-contact-form', function () {
        return view('forms.contact'); // 你的Blade表单视图路径
    });
    

    Blade视图示例(resources/views/forms/contact.blade.php):

    <form method="POST" action="{{ route('contact.submit') }}">
        @csrf
        <div>
            <label>姓名</label>
            <input type="text" name="name" required>
        </div>
        <div>
            <label>邮箱</label>
            <input type="email" name="email" required>
        </div>
        <button type="submit">提交</button>
    </form>
    
  2. WordPress端注册短代码
    在functions.php中添加:

    add_shortcode('laravel_contact_form', 'embed_laravel_form');
    function embed_laravel_form() {
        $form_url = get_site_url() . '/embeddable-contact-form';
        $response = wp_remote_get($form_url);
    
        if (is_wp_error($response)) {
            return '<p>表单加载失败,请稍后重试。</p>';
        }
    
        return wp_remote_retrieve_body($response);
    }
    

    之后在WordPress页面编辑器中插入短代码[laravel_contact_form]即可。

    注意:CSRF令牌有效性依赖同域名session,由于Laravel和WordPress共享主域名,表单提交时Laravel会自动验证CSRF令牌,无需额外配置。

方案2:iframe嵌入(最简单)

如果不需要深度样式整合,直接用iframe嵌入Laravel表单页面:

<iframe src="/embeddable-contact-form" 
        width="100%" 
        height="600px" 
        frameborder="0" 
        title="联系表单"></iframe>

优点:无需处理CSRF和数据传递问题,表单完全由Laravel控制;缺点:样式独立,需要额外调整iframe内的CSS适配WordPress页面。


内容的提问来源于stack exchange,提问作者swhitlow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:50:31