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

在 Laravel 中,获取上一次请求的 URL 和输入数据是常见需求,比如表单提交失败后返回原页面并保留输入内容。Laravel 提供了简单且优雅的方式来实现。
使用 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') 获取指定字段的旧值。<input name="email" value="{{ old('email') }}">
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,让前后请求之间的数据传递变得非常自然。不复杂但容易忽略的是:确保中间件 StartSession 和 ShareErrorsFromSession 已启用,这是 old input 能工作的前提。
以上就是Laravel如何获取上一次请求的URL和输入的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号