我遇到了一个奇怪的问题,其中辅助函数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()
的情况下提交表单后提交表单后
修改 认为这可能与使用post和get方法的单个路由名称有关,表单已更改,因此通过get提交,问题仍然存在。例如: web.php 表单
testView.blade.php中的Route::get('/test', function(function(Illuminate\Http\Request $request){
return view('testView');
});
<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>
答案 0 :(得分:2)
使用redirect back()
代替直接在post
方法中加载视图。
return redirect()->back()->withInput();
您需要flash
请求数据将old input
置于会话中,否则old()
将返回空结果。请在此处查看官方doc。