我使用了5.4,并且在转换控制器中有一个索引动作,该动作显示了表单,然后在转换控制器中计算了另一个动作。因此该表单具有从货币,金额,到货币的输入,并且所有这些都是必需的。
这是我要进行计算操作的验证:
$this->validate(request(), [
'from_currency' => 'required|min:3|max:3|alpha',
'to_currency' => 'required|min:3|max:3|alpha',
'amount' => 'required|numeric',
]);
如果验证失败,我希望在显示错误时使用它的形式,它会预先填充输入内容。
有没有可以用于Request的功能?我知道如何获取刀片内部的域/路径,例如Request :: root(),并且还在视图中尝试了Request :: input('from_currency),但不起作用。
我什至尝试设置视图数据,例如'from_currency'=> request('from_currency'),它为空。有想法吗?
答案 0 :(得分:1)
当您验证表单失败时,您可以使用所有已提交的输入重定向到同一页面
$validator = Validator::make($request->all(), [
'from_currency' => 'required|min:3|max:3|alpha',
'to_currency' => 'required|min:3|max:3|alpha',
'amount' => 'required|numeric',
]);
if ($validator->fails()) {
return redirect('index')
->withErrors($validator)
->withInput();
}
在刀片视图中,您可以通过使用old
助手来显示旧值
<input type="text" name="from_currency" value="{{ old('from_currency') }}">
<input type="text" name="to_currency" value="{{ old('to_currency') }}">
<input type="text" name="amount" value="{{ old('amount') }}">
答案 1 :(得分:0)
尝试一下
在刀片文件中,确保输入内容如下:
<input type="text" ... value="{{ old('from_currency') }}" ... >.
然后在您的控制器中...
if($validation->fails()) {
return redirect()->back()->withInput();
}
答案 2 :(得分:0)
您也可以使用 Validate 而不是 Validator::make。
例如
$this->validate($request, [
'question' => "required|min:10|max:100",
'answer' => "required|min:20|max:300",
'rank' => "required|numeric|gt:0|lt:100",
]);
然后在你的表单中使用
<input type="text" class="form-control" id="question" name="question" value="{{ old('question') }}">
如果验证器失败,这将自动重定向回输入。
这样,您不必必须包含
if($validation->fails()) {
return redirect()->back()->withInput();
}