Решено: Laravel 6 Не удается получить сообщение об ошибке проверки ввода массива (вход с тем же именем) с другими входами, если общий вход превышает 85 - PullRequest
0 голосов
/ 11 января 2020

Я использую laravel 6.10 на windows 7 (x64) сервере Wamp (v 3.2.2.2).

Я проверяю 1 вход массива и 2 ввода текста. Я получаю сообщение об ошибке валидации в блейде, если размер массива 84 или меньше. Если я увеличу размер массива до 85. Я не получаю сообщение об ошибке.

Функция проверки работает так, как она перенаправляет назад, если ввод недействителен, но не показывает сообщение об ошибке, если размер массива больше 85. Если ввод допустим, тогда нет проблем

здесь blade

@if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif          
   <div class="flex-center position-ref full-height">
        <form method="post" action="{{url('form')}}" id="infoForm" >
            @csrf
            <input type="text" class="form-control" name="name" placeholder="Section A" value="{{ old('name') }}">
            <input type="text" class="form-control" name="king" placeholder="Section A" value="{{ old('king') }}">
            @for($i=0;$i<85;$i++)
                <input type="hidden" name="test[]" value="{{$i}}">
            @endfor
            <button type="submit">Submit</button>
        </form>         
    </div>

Controller

 public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'bail|required',
        'king' => 'bail|required',
        'test.*' => 'required'
    ]);
    dd('test');
    return redirect('form')->with('success', 'Information has been added');    

}

@ dd (session () -> all ()) Результат в blade-сервере, если размер массива меньше 84

array:4 [▼
  "_token" => "s3kZaeGmEI9C7lNcH8mDLnzU0KNcXkO9luPeIzQa"
  "_flash" => array:2 [▶]
  "_old_input" => array:4 [▶]
  "errors" => Illuminate\Support\ViewErrorBag {#246 ▶}
]

@ dd (session () -> all ()) Результат в блейде, если размер массива больше 84

array:3 [▼
  "_token" => "HjFH5QBSYaqnBAx8QG6PEGiIObueWYr6AjpVPolZ"
  "_previous" => array:1 [▶]
  "_flash" => array:2 [▶]
]

Это проблема, связанная с веб-сервером или laravel. Пожалуйста, помогите мне решить это. Вот проект на github https://github.com/mhabib555/LaravelMultipleInputWithSameNameValidation

Размещено на живом сервере http://mhtest00001.herokuapp.com/form

Ответы [ 4 ]

1 голос
/ 13 января 2020

Проверьте, есть ли у вас драйвер сеанса, если он является поваром ie, поскольку по умолчанию используется для новых проектов, добавьте его в свой файл .env

SESSION_DRIVER = файл

0 голосов
/ 12 января 2020

Где ваша проверка на максимальный размер массива? Убедитесь, что вы пишете это

0 голосов
/ 12 января 2020
0 голосов
/ 11 января 2020

Я думаю, что проблема может быть в значении post_max_size в вашем php.ini. Обязательно обновите это значение с более высоким значением.

Также вместо:

'test.*' => 'required'

вы, вероятно, также хотите добавить:

'test' => ['array']

или, возможно,

'test' => ['array', 'required']

если в тестовом массиве должен быть хотя бы 1 элемент, чтобы убедиться, что test является массивом.

...