Laravel 5.5 | 除非使用 $request->flash(),否则 old() 为空

whi*_*hoa 3 laravel laravel-5.5

我遇到了一个奇怪的问题,辅助函数old()总是在刀片视图中返回 null,除非$request->flash()在加载视图之前使用。过去我在使用 laravel 时从来没有这样做过。有什么改变或者有什么我忘记设置/配置的东西。下面是一个简单的行为示例:

网页.php

Route::get('/test', function(){

  return view('testView');

});

Route::post('/test', function(Illuminate\Http\Request $request){

  $request->flash(); // if uncommented old() works, if commented old() does not work
  return view('testView');

});
Run Code Online (Sandbox Code Playgroud)

testView.blade.php 中的表单

<form action="/test" method="POST">

  {{csrf_field()}}

  <input type="hidden" name="test001" value="001"/>
  <input type="hidden" name="test002" value="002"/>

  <div class="">
    {{old('test001')}}
    <br/>
    {{old('test002')}}
  </div>

  <button type="submit">GO</button>
</form>
Run Code Online (Sandbox Code Playgroud)

表单提交后没有 $request->flash()

在此处输入图片说明

表单提交后 $request->flash()

在此处输入图片说明

编辑

认为这可能与对 post 和 get 方法使用单个路由名称有关,因此将表单更改为通过 get 提交,并且问题仍然存在。例如:

网页.php

Route::get('/test', function(function(Illuminate\Http\Request $request){

  return view('testView');

});
Run Code Online (Sandbox Code Playgroud)

testView.blade.php 中的表单

<form action="/test" method="GET">

  <input type="hidden" name="test001" value="001"/>
  <input type="hidden" name="test002" value="002"/>

  <div class="">
    {{old('test001')}}
    <br/>
    {{old('test002')}}
  </div>

  <button type="submit">GO</button>
</form>
Run Code Online (Sandbox Code Playgroud)

Soh*_*415 5

使用redirect back()而不是直接在post方法中加载视图。

return redirect()->back()->withInput();
Run Code Online (Sandbox Code Playgroud)

您需要flash请求数据放入old input会话,否则old()将返回空结果。在此处查看官方文档