Laravel验证不适用于许多字段

时间:2020-03-22 16:20:48

标签: laravel laravel-validation

我有一个奇怪的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做任何事情。

有人知道这个问题可能是什么吗?

1 个答案:

答案 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