Laravel проверка не работает со многими полями - PullRequest
0 голосов
/ 22 марта 2020

У меня странное Laravel поведение. Если я проверяю свою форму с менее чем 10 полями, все работает отлично, включая отображение сообщений об ошибках (например, «field1 is required»):

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 голосов
/ 22 марта 2020

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
...