返回

提交带有 URL 参数的 Laravel 表单:问题与解决方案

php

通过 URL 参数提交 Laravel 表单

简介

在 Laravel 应用程序中,提交带有 URL 参数的表单时,可能会遇到问题。本文将深入探讨此问题,提供解决方法,并提供逐步的代码示例。

问题识别

当用户访问品牌页面时,会提取该品牌的关联信息。用户随后提交该品牌的申请。然而,表单发布到错误的 URL,导致提交失败。

调查

在表单元素之前打印变量后,发现该变量在提交时变得未定义。这是因为表单中的 URL 参数未正确传递。

解决方案

1. 正确传递 URL 参数

表单操作属性应正确使用 URL 参数,如 action="/apply/brand/{{ $brand -> id }}"

2. 检查路由定义

web.php 中的路由定义应正确包含 URL 参数,如 Route::post('/apply/brand/{brand_id}', 'ApplicationController@apply_store');

3. 处理 URL 参数

在控制器的方法中,可以使用 $request->get('brand_id') 从请求中获取 URL 参数。

代码示例

表单视图

<form action="/apply/brand/{{ $brand -> id }}" method="post">
  {{ csrf_field() }}
  <!-- 表单字段 -->
</form>

控制器方法

public function apply_store(Request $request)
{
    $brand_id = $request->get('brand_id');

    // 创建新的申请记录
    $application = new Application([
        'influencer_id' => Auth::id(),
        'brand_id' => $brand_id,
        // ...
    ]);

    $application->save();

    // 重定向到成功的页面
    return redirect('/apply');
}

常见问题解答

  • 为什么 URL 参数在表单提交时会变得未定义?
    答:因为表单中未正确传递 URL 参数。

  • 如何正确传递 URL 参数?
    答:在表单操作属性中使用正确的语法,如 action="/apply/brand/{{ $brand -> id }}"

  • 如何获取 URL 参数的请求?
    答:在控制器的方法中,可以使用 $request->get('brand_id') 获取 URL 参数。

  • 路由定义中的 URL 参数语法是什么?
    答:/apply/brand/{brand_id},其中 {brand_id} 是 URL 参数。

  • 提交带有 URL 参数的 Laravel 表单的优势是什么?
    答:它允许从用户收集特定品牌或其他信息的申请。

结论

通过遵循本文中的步骤,你可以轻松地提交带有 URL 参数的 Laravel 表单。这有助于收集数据并将其存储在数据库中,从而改善用户体验并自动化流程。