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

Laravel表单双提交按钮问题:返回表单时保留字段填充值

解决表单提交后返回时保留字段值的问题

看起来你遇到的核心问题是:点击返回表单的按钮时,用户输入的ordernumber和customername值没有被存入session,导致视图里的old()函数无法读取到之前提交的数据。下面给你两种可行的解决方案:

方案一:直接闪存请求输入(最简单)

当你需要返回表单页面并保留所有提交的输入值时,可以用Laravel的withInput()方法,它会自动把当前请求的所有输入数据闪存到session中,这样old()函数就能正常获取值了。修改你的控制器代码:

$retour->ordernumber = request('ordernumber');
$retour->customername = request('customername');
$retour->save();

if ($request->submit === 'submit') {
    return redirect('/return')->with('message', 'Approved');
} else {
    // 使用withInput()闪存所有提交的输入
    return redirect('/return/create')
        ->with('message', 'Approved, you can make a new report.')
        ->withInput();
}

你的原视图代码不需要修改,{{ old('ordernumber') }}和{{ old('customername') }}就能自动填充之前提交的值了。如果只想保留特定字段,还可以给withInput()传指定字段数组:->withInput(['ordernumber', 'customername'])。

方案二:传递模型保存后的数据(适合用处理后的值)

如果你希望显示的是保存到数据库后的模型数据(比如字段有默认值或经过业务处理),可以把模型数据通过with()方法传递到视图,然后在视图里优先使用这些值, fallback到old():

修改控制器代码

$retour->ordernumber = request('ordernumber');
$retour->customername = request('customername');
$retour->save();

if ($request->submit === 'submit') {
    return redirect('/return')->with('message', 'Approved');
} else {
    // 把保存后的模型数据传递到视图
    return redirect('/return/create')
        ->with('message', 'Approved, you can make a new report.')
        ->with('retour', $retour);
}

修改视图代码

<div class="form-group">
    <label>Ordernumber</label>
    <div class="input-group">
        <div class="input-group-prepend">
            <span class="input-group-text">653</span>
        </div>
        <input type="text" name="ordernumber" class="form-control" placeholder="Enter ordernumber" 
               value="{{ isset($retour) ? $retour->ordernumber : old('ordernumber') }}">
    </div>
</div>
<div class="form-group">
    <label>Customername</label>
    <input type="text" name="customername" class="form-control" placeholder="Enter customername" 
           value="{{ isset($retour) ? $retour->customername : old('customername') }}">
</div>

额外提示

别忘了确保你的表单里添加了@csrf令牌,这是Laravel表单提交的必要验证,否则请求可能会被框架拒绝。

内容的提问来源于stack exchange,提问作者Othman Boūlal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:42:34