Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 成功验证后重新填充用户输入_Validation_Laravel_Redirect_Blade_Laravel 5.1 - Fatal编程技术网

Validation 成功验证后重新填充用户输入

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'

我试图创建一个搜索表单,用户必须从一些下拉菜单中进行选择,并在几个字段中的一个字段中输入文本。问题是我正在重新显示搜索页面,搜索结果就在下面。要做到这一点,我不是重定向,我只是返回一个视图,其中包含需要压缩的数据集

在验证失败后重定向时,是否有类似于此input::old('x')的方法获取输入

路线为:

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