已解决:Laravel 6 如果总输入大于 85,则无法获取验证数组输入(具有相同名称的输入)与其他输入的错误消息

Solved: Laravel 6 Can't get error message of validation of array input (input with same name) with other inputs if total input are greater than 85

我在 windows 7 (x64) wamp 服务器 (v 3.2.2.2) 上使用 laravel 6.10。

我正在验证 1 个数组输入和 2 个文本输入。如果数组大小等于或小于 84,我会在 blade 中收到验证错误消息。如果我将数组大小增加到 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>

控制器

 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()) 如果数组大小小于 84

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

@dd(session()->all()) 如果数组大小大于 84

,结果为 blade
array:3 [▼
  "_token" => "HjFH5QBSYaqnBAx8QG6PEGiIObueWYr6AjpVPolZ"
  "_previous" => array:1 [▶]
  "_flash" => array:2 [▶]
]

这是与网络服务器有关还是与 laravel 有关的问题。请帮助我解决它。 这是 github 上的项目 https://github.com/mhabib555/LaravelMultipleInputWithSameNameValidation

我认为问题可能出在您的 php.ini 中为 post_max_size 设置的值。确保用更高的值更新它。

也代替:

'test.*' => 'required'

您可能还想添加:

'test' => ['array']

或者也许

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

如果测试数组中应该至少有 1 个项目以确保 test 是一个数组。

您在哪里验证最大数组大小? 一定要写

reproduced issue with array size 500

检查你有什么会话驱动程序,如果它是一个 cookie,因为默认是在新项目上,将它添加到你的 .env 文件

SESSION_DRIVER=文件