laravel 5.5 |除非使用$ request-> flash(),否则old()在视图中为空

时间:2018-02-02 16:55:36

标签: laravel laravel-5.5

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

web.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');

});
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>
在没有$request->flash()

的情况下提交表单后

enter image description here

使用$request->flash()

提交表单后

enter image description here

修改

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

web.php

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

  return view('testView');

});
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>

1 个答案:

答案 0 :(得分:2)

使用redirect back()代替直接在post方法中加载视图。

return redirect()->back()->withInput();

您需要flash请求数据将old input置于会话中,否则old()将返回空结果。请在此处查看官方doc