Validation 成功验证后重新填充用户输入
我试图创建一个搜索表单,用户必须从一些下拉菜单中进行选择,并在几个字段中的一个字段中输入文本。问题是我正在重新显示搜索页面,搜索结果就在下面。要做到这一点,我不是重定向,我只是返回一个视图,其中包含需要压缩的数据集 在验证失败后重定向时,是否有类似于此input::old('x')的方法获取输入 路线为:Validation 成功验证后重新填充用户输入,validation,laravel,redirect,blade,laravel-5.1,Validation,Laravel,Redirect,Blade,Laravel 5.1,我试图创建一个搜索表单,用户必须从一些下拉菜单中进行选择,并在几个字段中的一个字段中输入文本。问题是我正在重新显示搜索页面,搜索结果就在下面。要做到这一点,我不是重定向,我只是返回一个视图,其中包含需要压缩的数据集 在验证失败后重定向时,是否有类似于此input::old('x')的方法获取输入 路线为: Route::get('search', ['as' => 'main.search.get', 'uses' => 'MainController@showSearchPage'
Route::get('search', ['as' => 'main.search.get', 'uses' => 'MainController@showSearchPage']);
Route::post('search', ['as' => 'main.search.post', 'uses' => 'MainController@showSearchResults']);
视图中的代码示例:
{!! Form::open(array('route' => 'main.search.post', 'class' => 'form-inline align-form-center', 'role' => 'form')) !!}
<div class="form-group">
{!! Form::label('product_code', 'Product Code: ',['class' => 'control-label label-top']) !!}
{!! Form::text('product_code', Input::old('product_code'), ['class' => 'form-control input-sm']) !!}
</div>
谢谢我也有同样的问题。对我有效的解决方案是在控制器中添加以下行
session(['_old_input' => $request->input()]);
现在我将解释它是如何工作的 在视图中,调用全局函数old():
<input type="username" id="username" class="form-control" name="username" value="{{ old('username') }}" placeholder="Username" autofocus>
这将调用\Http\Request->old():
哪个调用了Lightlight\Session\Store->getOldInput():
此呼叫正在会话中查找\u旧\u输入。因此,解决方案是使用该值向会话添加输入
希望这有帮助。您可以使用
请求
而不是旧的
,因为它是post请求
change {{old('product_code')}} to {{request('product_code')}}
你能显示控制器的方法代码吗?看起来你在重定向之前忘记了一个步骤,因为laravel实际上可以做到。我没有重定向,我正在返回一个视图,这就是我遇到问题的全部原因,我没有重定向,只是返回视图。你在使用javascript吗?当您返回视图时,我看不到代码。我在上面从返回视图的控制器添加了一个代码段。当前它显示了我的解决方法(使用Input::flash())一个问题,您是否通过表单元素提交搜索数据?实际上,此解决方案导致输入永久存储在用户会话中,直到他们输入新内容。我只想在一次提交时将输入保存在字段中,使用上面提到的input::flash()可以将其重新加载两次,这很烦人,但可行。您的解决方案将其永久保留,因为您将其永久地放入会话中,而不是作为闪存。您的答案格式非常好,我了解了一些关于Laravels的内部信息。:-)我同意。我认为你的解决方案更好。实际上,我在代码中用您的答案替换了我的代码片段:)
function old($key = null, $default = null)
{
return app('request')->old($key, $default);
}
public function old($key = null, $default = null)
{
return $this->session()->getOldInput($key, $default);
}
public function getOldInput($key = null, $default = null)
{
$input = $this->get('_old_input', []);
return Arr::get($input, $key, $default);
}
change {{old('product_code')}} to {{request('product_code')}}