信息发布→ 登录 注册 退出

Laravel如何获取上一次请求的URL和输入

发布时间:2025-11-19

点击量:
使用 url()->previous() 或 request()->header('referer') 获取上一页 URL,结合 withInput() 和 old() 保留表单输入,需确保 StartSession 中间件启用。

在 Laravel 中,获取上一次请求的 URL 和输入数据是常见需求,比如表单提交失败后返回原页面并保留输入内容。Laravel 提供了简单且优雅的方式来实现。

获取上一次请求的 URL

使用 url()->previous()request()->header('referer') 可以获取用户来自哪个页面。

  • url()->previous():Laravel 封装的方法,安全且推荐使用。
  • request()->header('referer'):直接读取 HTTP 请求头中的 referer 字段,注意拼写是 "referer" 而非 "referrer"。

示例:

return redirect(url()->previous());

常用于重定向回上一页。

获取上一次请求的输入数据

Laravel 的 old input 机制可以在重定向后保留表单输入。

  • 使用 old('field_name') 获取指定字段的旧值。
  • 在 Blade 模板中常用:
  • 使用 request()->old() 可在控制器中访问旧输入。

当使用 withInput() 时,Laravel 会将当前请求的输入数据存入 session,供下次请求读取。

示例:

return back()->withInput();

这会让用户回到前一页,并保留已填写的表单内容。

结合使用场景(如表单验证失败)

典型流程如下:

public function store(Request $request)
{
    $validated = $request->validate([
        'email' => 'required|email',
        'name'  => 'required|string|max:255'
    ]);

    // 验证失败会自动重定向回上一页,并保留输入
    // 手动处理时可:
    if ($someError) {
        return back()->withInput();
    }

    // 正常处理逻辑...
}

Blade 模板中通过 old() 函数恢复输入值。

基本上就这些。Laravel 的 withInput()old() 配合 session,让前后请求之间的数据传递变得非常自然。不复杂但容易忽略的是:确保中间件 StartSessionShareErrorsFromSession 已启用,这是 old input 能工作的前提。

标签:# laravel  # session  # ai  # 表单提交  # red  # 中间件  # 封装  # 表单验证  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!