我有一个奇怪的Laravel行为。如果我使用少于10个字段来验证我的表单,则一切工作都很好,包括显示错误消息(例如“ field1是必填字段”):
public function myFctName(Request $request)
{
$validator = Validator::make($request->all(), [
'year' => 'required',
'field1' => 'required',
'field2' => 'required'
]);
if ($validator->fails()) {
return back()->withErrors($validator->errors())->withInput();
}
return view('companiesView');
}
我的表格有23个字段。只要添加约10个字段,如果没有验证错误,一切都将正常工作。这是第二个示例代码:
public function myFctName(Request $request)
{
$validator = Validator::make($request->all(), [
'year' => 'required',
'field1' => 'required',
'field2' => 'required',
'field3' => 'required',
'field4' => 'required',
'field5' => 'required',
'field6' => 'required',
'field7' => 'required',
'field8' => 'required',
'field9' => 'required',
'field10' => 'required',
'field11' => 'required',
'field12' => 'required',
'field13' => 'required',
'field14' => 'required'
]);
if ($validator->fails()) {
return back()->withErrors($validator->errors())->withInput();
}
return view('companiesView');
}
如果存在验证错误,则重定向(back())仍然有效。但是,没有显示错误信息。
如果我将行return back()->withErrors($validator->errors())->withInput();
更改为return back()->withErrors($validator->errors());
,则会显示错误消息。因此问题必须出在withInput()
函数上。
此外,在withInput()
部分就位的情况下,Chrome控制台中出现警告(尽管Firefox中未发生):Set Cookie header is ignored in response from url: ... Cookie length should be less than or equal to 4096 characters
。目前,我还没有积极地对Cookies做任何事情。
有人知道这个问题可能是什么吗?
答案 0 :(得分:0)
withInput()
在后台使用cookie / session来存储旧值。也许那些正在泛滥。
另一个可能是
$request->validate([
'year' => 'required',
]);
<input type="text" name="year" value="{{old('year')}}">
显示错误
@if($errors->any())
@foreach($errors->all() as $error)
{{$error}}
@endforeach
@endif