【问题标题】: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已解决:如果总输入大于 85,Laravel 6 Can't get error message of validation of array input (input with same name) with other inputs
【发布时间】:2020-04-28 18:22:37
【问题描述】:

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

我正在验证 1 个数组输入和 2 个文本输入。如果数组大小为 84 或小于该值,我会在刀片中收到验证错误消息。如果我将数组大小增加到 85。我没有收到任何错误消息。

验证功能会在输入无效时重定向回来,但如果数组大小大于 85,则不会显示错误消息。如果输入有效,则没有问题

这是刀片

@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,则返回刀片

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 [▶]
]

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

【问题讨论】:

    标签: php arrays laravel laravel-6 laravel-validation


    【解决方案1】:

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

    也代替:

    'test.*' => 'required'
    

    您可能还想添加:

    'test' => ['array']
    

    或许

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

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

    【讨论】:

    • 我在 wampserver 的所有 php.ini 文件中将 post_max_size 设置为 0(正如 php.ini 所说:它的值可能为 0 以禁用限制),但我仍然没有在刀片中收到错误消息。并且还从验证中删除了测试数组,但刀片中仍然没有错误消息。
    • @MuhammadHabib 确保按照此处所述重新启动网络服务器 stackoverflow.com/questions/12892331/… 如果没有帮助,请尝试在验证之前添加 dd($request-&gt;all()); 以查看其中的所有数据
    • 已经重启了服务器。当我使用 dd($request->all) 时,我看到了所有输入。验证功能也可以工作,因为如果输入无效,它会重定向回来,但如果数组大小大于 85,它不会显示错误消息。如果输入有效,那么没问题。
    【解决方案2】:

    您在哪里验证最大数组大小? 确保你写它

    【讨论】:

    • 我认为我不需要最大数组大小验证。如帖子中所述,我的实际问题是,如果数组大小大于 84,我不会在刀片上收到错误消息(会话闪存)。如果数组小于 84,那么我会收到验证消息(例如,需要名称字段)。
    【解决方案3】:
    【解决方案4】:

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

    SESSION_DRIVER=文件

    【讨论】:

    • 通过将会话驱动程序更改为文件 SESSION_DRIVER=file 解决了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2022-12-26
    相关资源
    最近更新 更多